如何在闭包内制作原型?

时间:2017-03-07 03:57:32

标签: javascript

在这里,我有两个代码:

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的情况下对其进行优化?

我必须将某些内容传递给函数...

1 个答案:

答案 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();
}