// Case A
function Constructor() {
this.foo = function() {
...
};
...
}
// vs
// Case B
function Constructor() {
...
};
Constructor.prototype.foo = function() {
...
}
人们建议使用原型的主要原因之一.foo
是在原型的情况下创建一次,而this.foo
在使用其他方法时创建多次。
然而,人们期望口译员可以优化这一点。foo
因此在案例 A中只有一个函数副本。
当然,由于闭包,您仍然会为每个对象拥有一个唯一的作用域上下文,但与每个对象的新函数相比,这具有更少的开销。
现代 JS 解释器是否优化了案例 A,所以只有一个函数副本foo
?