我正在尝试更多地了解原型继承,我对将原型添加到实例并将它们添加到实例之间的区别感到困惑。为什么我要做另一个呢?
原型方法:
function Foo() {}
Foo.prototype.doBar = console.log.bind(console, 'Did bar!');
var foo = new Foo();
foo.doBar(); // prints "Did bar!"
实例方法:
function Foo() {
this.doBar = console.log.bind(console, 'Did bar!');
}
var foo = new Foo();
foo.doBar(); // prints "Did bar!"
将我的方法放在原型上有什么好处?有没有时候通过构造函数在实例上声明方法更有意义?
答案 0 :(得分:1)
内部是相同的。
在编辑先前声明的对象时,可以使用原型,可以在外部库或类似的对象中。
编辑原型比查找原始构造函数声明更容易,并修改那里的代码。
此外,如果你想使用原始声明,然后更改它,你可以使用原型,但不推荐,最好创建一个不同的"类"避免混淆。
答案 1 :(得分:1)
通过构造函数声明方法具有性能影响。对于每个新创建的实例,JS解释器必须重新读取函数代码。
通常你希望你的构造函数尽可能轻,所以总是声明原型方法而不是通过构造函数是一个很好的拇指规则。