以下代码之间有什么区别?

普通的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)和浏览器本身的功能。不过这只是一个旁注...

09-25 17:17
查看更多