【发布时间】:2011-11-19 01:25:31
【问题描述】:
// Case A
function Constructor() {
this.foo = function() {
...
};
...
}
// vs
// Case B
function Constructor() {
...
};
Constructor.prototype.foo = function() {
...
}
人们建议使用原型的主要原因之一是.foo 在原型的情况下被创建一次,而this.foo 在使用其他方法时被创建多次。
但是人们希望口译员可以优化这一点。这样在案例 A 中只有一个函数 foo 的副本。
当然,由于闭包,您仍然会为每个对象拥有一个唯一的作用域上下文,但与每个对象的新函数相比,这具有更少的开销。
现代 JS 解释器是否优化了案例 A,所以函数 foo 只有一个副本?
【问题讨论】:
标签: javascript v8 spidermonkey