这里,我有两个代码:
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中检查这两个代码之后,第二个代码将接受一个JS堆3.0MB,第一个代码将接受一个JS堆10 JS。
这是否意味着,在第一个代码中已经创建了10000次构建函数?如何在不删除封面mod的情况下对其进行细化?
我得把一些东西传递到函数中..。
发布于 2017-03-07 04:09:07
如果希望隐藏构造函数,但只对其进行一次计算,则可以使用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();
}https://stackoverflow.com/questions/42639930
复制相似问题