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
方法更干净,这样就不会弄乱原型链。