为什么把方法放在类的原型而不是在构造函数中声明呢?

我想了解更多关于原型inheritance,我有点混淆添加方法的原型和添加到实例之间的差异。 我为什么要做另一个呢?

原型方法:

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!" 

把我的方法放在原型上有什么好处? 是否有一段时间通过构造函数声明实例上的方法更有意义?

通过构造函数声明方法具有性能影响。 对于每个新创build的实例,JS解释器都必须重新读取函数代码。

一般来说,你希望你的构造函数尽可能的轻,所以总是声明原型方法而不是通过构造函数是一个很好的规则。

内部是一样的。

当您编辑之前声明的对象时,您可以使用原型,可以在外部库或类似的东西。

编辑原型比查找原始构造函数声明更容易,并在那里修改代码。

另外如果你想使用原始声明,然后改变它,你可以使用原型,但不build议,最好是创build一个不同的“类”,以避免混淆。