JS - 定义原型方法

时间:2017-12-26 17:25:34

标签: javascript

此语法之间是否有区别

function Foo() {}

Foo.prototype.method1 = function() {};
Foo.prototype.method2 = function() {};

和这一个?

function Foo() {}

Foo.prototype = {
    method1: function() {},
    method2: function() {}
}

是否应该优先考虑另一个?

1 个答案:

答案 0 :(得分:2)

这两个选项之间存在细微差别。我建议使用前者来保留指向用于创建对象的实际构造函数的constructor属性。在下面的示例中,您将看到两个选项的区别:

  • Foo使用prototype.newMethod语法。
  • Bar使用了prototype = {...}语法。

Difference between extending the prototype and assigning an object to it

如果您想使用Bar语法,您始终可以将constructor属性设置为正确的函数。

我希望这会有所帮助,如果您有任何疑问请与我联系。