首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在封闭范围内制作原型?

如何在封闭范围内制作原型?
EN

Stack Overflow用户
提问于 2017-03-07 03:57:32
回答 1查看 44关注 0票数 1

这里,我有两个代码:

代码语言: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();
};

代码语言:javascript
复制
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的情况下对其进行细化?

我得把一些东西传递到函数中..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 04:09:07

如果希望隐藏构造函数,但只对其进行一次计算,则可以使用IIFE创建一个新的作用域:

代码语言:javascript
复制
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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42639930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档