当您在构造函数中创建一个方法时,如下所示:
var Something = function() {
this.doSomething = function() {/* do something here */};
};
每次使用 Something
构造函数创建新对象时,Javascript 都会复制 doSomething
的副本。
但是当你这样做时:
var Something = function() {
};
Something.prototype.doSomething = function() {/* Do something here */};
每次使用 Something
构造函数创建对象时,javascript 是否仍然会复制 doSomething
,或者在每个对象中都生成 doSomething
吗为了效率而引用相同的东西?
最佳答案
您可以自己轻松测试,只需运行:
var a = new Something();
var b = new Something();
console.log(a.doSomething === b.doSomething);
如果您在原型(prototype)中定义方法,console.log 应该打印 true
。
无论如何,对于 JavaScript 的所有内容,我建议浏览 MDN,因为它对大多数主题都提供了非常好的介绍。 CSS 和 HTML 也是如此。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
关于JavaScript 方法和副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43808932/