Javascript JS-定义原型方法

Javascript JS-定义原型方法,javascript,Javascript,这两种语法之间有区别吗 function Foo() {} Foo.prototype.method1 = function() {}; Foo.prototype.method2 = function() {}; 这个呢 function Foo() {} Foo.prototype = { method1: function() {}, method2: function() {} } 这两个选项之间有细微的差别。我建议使用前者来保留构造函数属性,该属性指向用于创建对

这两种语法之间有区别吗

function Foo() {}

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

function Foo() {}

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

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

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

如果您想使用条形语法,您可以始终将
构造函数
属性设置为正确的函数


我希望这有帮助,如果您有任何疑问,请告诉我。

第一个是添加,第二个是替换为
Foo.prototype
如果您想使用对象文字语法,只需使用
object.assign
我很困惑。空的Foo函数不是构造函数吗?是的,但是如果你检查一下Bar示例,没有构造函数,因为原型被对象文本赋值覆盖了。我认为使用
Foo
方法更干净,这样就不会弄乱原型链。