向JS原型添加函数时的样式约定

时间:2018-06-14 15:10:29

标签: javascript prototype

据我所知,在将多个函数添加到对象的原型之间,JavaScript没有功能上的区别,如下所示:

MyObject.prototype.myFunction = function() {
    return this.foo + this.bar;
}
MyObject.prototype.otherFunction = function() {
    return this.foo * this.bar;
}

或者这个:

MyObject.prototype = {
    myFunction: function() {
        return this.foo + this.bar;
    },
    otherFunction: function() {
        return this.foo * this.bar;
    }
}

有没有理由使用一个而不是另一个?对我来说,第二个选项更清晰,因为所有函数声明都在缩进方面位于原型的“内部”。这似乎主要是一种风格问题;是否有遵循惯例?

2 个答案:

答案 0 :(得分:0)

使用

 MyObject.prototype = { }

将覆盖先前定义的方法,属性和继承。所以你可以使用

Object.assign(MyObject.prototype, {
   /*...*/
});

然后。我更喜欢将所有原型方法保存在一起,所以我会选择这个变体,而不是仅仅自己分配每个方法。

答案 1 :(得分:0)

我更喜欢所有情况下的第一个选项,因为它更具扩展性和防错性。在第一种情况下,您将添加到MyObject的原型,在第二种情况下,您将覆盖它。