以下代码之间有什么区别?
普通的javascript:
Array.prototype.addOrRemove = function(value) {
var index = _.indexOf(this, value);
if (index === -1) {
this.push(value);
} else {
this.splice(index, 1);
}
return this;
};
下划线扩展:
_.extend(Array.prototype, {
addOrRemove: function(value) {
var index = _.indexOf(this, value);
if (index === -1) {
this.push(value);
} else {
this.splice(index, 1);
}
return this;
}
});
一个人比另一个人有什么好处吗?
最佳答案
在这种情况下,没有任何问题。如果要添加多个新属性/方法,下划线方法会更好。
但是我建议不要修改Array原型(prototype),除非您知道正在使用的库以及它们在做什么,否则,如果您重写某些方法,很容易破坏某些其他库(PrototypeJS)和浏览器本身的功能。不过这只是一个旁注...