Kir*_*met 9 javascript performance jquery node.js
在JavaScript中向String类添加函数有什么影响?这是一个坏主意吗?例如,
// String functions
String.prototype.startsWith = function(string) {
return (this.indexOf(string) === 0);
}
String.prototype.empty = function() {
//console.log($.trim(this.valueOf()));
if($.trim(this.valueOf()) == '') {
return true;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
isa*_*acs 12
在性能方面,没有效果.
但它仍然不是一个好主意,imo.你现在依赖于全球改变的状态.如果其他模块做同样的事情会发生什么?或者更糟糕的是,做一个稍微不同的事情,但使用相同的名称?哎哟.
最好只定义带有String参数的函数,然后使用这些函数.
首先,原型比对象上的函数慢.创建一个函数有成本和查找.在原型上查找比在普通对象上查找更昂贵
看看这个JSPerf:http://jsperf.com/prototype-methods-vs-object-methods
这是设置:
<script>
Benchmark.prototype.setup = function() {
function Bob() {
}
var b = new Bob();
Bob.prototype.testproto = function() {};
b.testobj = function() {};
};
</script>
Run Code Online (Sandbox Code Playgroud)

话虽如此,在字符串原型上添加内容与将其添加到任何其他原型没有什么不同.