在这里,我有两个代码:
var mod = function() {
var a = function() {
this.fucname = 'hello';
};
a.prototype.build = function() {
return 'before '+this.fucname;
};
return new a();
};
for( var i=0; i<10000; i++ ){
var newfuc = mod();
};
和
var a = function() {
this.fucname = 'hello';
};
a.prototype.build = function() {
return 'before '+this.fucname;
};
for( var i=0; i<10000; i++ ){
var newfuc = new a();
};
在我检查chrome dev后,第二个代码采用JS HEAP 3.0MB, 第一个代码采用JS HEAP 10MB。
这是否意味着,构建函数已在第一个代码中创建了10000次?如何在不删除封面mod
的情况下对其进行优化?
我必须将某些内容传递给函数...
答案 0 :(得分:2)
如果你想隐藏构造函数但只评估一次,你可以使用IIFE来创建一个新范围:
var mod = (function() {
var a = function() {
this.fucname = 'hello';
};
a.prototype.build = function() {
return 'before ' + this.fucname;
};
return function() {
return new a();
};
})();
for (var i = 0; i < 10000; i++) {
var newfuc = mod();
}