javascript - 匿名函数存储效率

标签 javascript performance anonymous-function

假设我像这样创建一个对象工厂:

var newObj=function(x){
  var obj=[]
  obj.x=x
  obj.add=function(n){
    return this.x+n
  }
  return obj
}

现在假设我创建了该对象的数百个实例:

var obj1=newObj(1)
var obj2=newObj(2)
...

每个 obj1、obj2、... 是否存储它们自己的 obj.add 副本,或者它们是否都包含对存储在内存中的 obj.add 单个实例的引用?

谢谢!

最佳答案

objobj2 都会实例化它们自己的obj.add 副本。它们是在创建时执行并在对象的生命周期内存储在内存中的函数表达式。

如果你想保持性能,你应该使用prototyping :

var newObj=function(x){
  this.obj = [];
  this.obj.x = x;
  return this.obj;
}

newObj.prototype.add = function(n) {
    return this.obj.x += n;
}

这将创建一个函数,所有 future 的 newObj 对象都将使用该函数,而不会为完全相同的函数占用额外的内存空间。

关于javascript - 匿名函数存储效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513584/

相关文章:

javascript - jQuery UI droppable 还没有结束

javascript - 是否有 LayoutAnimation.Types 和 LayoutAnimation.Properties 的可用选项列表?

performance - 为什么 "grep --ignore-case"慢 50 倍?

javascript - 如何在组件中使用 react 在匿名方法中使用状态

javascript - 如何在 setTimeout() 中设置构造函数对象的值?

PHP 5 中的 PHP 匿名函数

Javascript 悬停不起作用

javascript - Kendo ui kendoSortable 不起作用

performance - Environment.Clone 窃取启动时间

performance - gslshell(基于 lua)返回 0/0 ==0/0 true