我已经读过,通过原型创建对象比闭包更快并且使用更少的内存,因为闭包需要重新创建所有函数。然后访问对象原型上的函数有点慢,因为它需要进一步遍历原型链以找到函数。
我想知道在构造函数中向原型函数添加引用是否可以通过极小的内存和初始设置影响来提高性能。这可以用这样的东西来实现......
function Customer2(name) {
this.name = name;
this.greet = this.constructor.prototype.greet;
}
Customer2.prototype = {
constructor: Customer2,
greet: function () {
return this.name + ' says hi!';
}
};
这里我添加一个变量this.greet
,它引用原型函数以节省遍历时间。
这是否是提高性能和降低内存消耗的有效方法?这会导致任何副作用,例如继承问题吗?
JSPerf链接:http://jsperf.com/prototype-pattern-local-reference
到目前为止,JSPerf似乎略微支持这个想法(除了Firefox,它似乎非常支持关闭设置,但没有任何意义,也许我做错了)。当然,这是一个非常小的例子,只有非常少的测试样本,它没有显示内存消耗,但认为它可能有所帮助。