如何防止复制函数,创建调用函数数组的构造函数

时间:2013-03-17 01:05:31

标签: javascript

目前,我已经定义了一个构造函数,它将使用私有变量funcs。

创建一个对象

extend方法将新函数添加到funcs数组中。

resolve函数将调用funcs数组中的所有函数:

var extendableFunc = function() {

   var funcs = [];

   this.resolve = function () {
      for(var i=0; i<funcs.length; i+=1) {
         funcs[i]();

      }
   };

   this.extend = function(newFn) {
      funcs.push(newFn);
   }

};


var exampleExt = new extendableFunc();

exampleExt.extend(function() {

   alert("hello!");
});

exampleExt.resolve();

要将相同的函数添加到多个extendableFunc对象的funcs数组中,我可以编写如下函数:

var extendMultiple = function(exts, func) {
   for(var i=0; i<exts.length; i+=1) {
      exts[i].extend(func);
   } 
}

但是,我相信这将创建我添加到每个funcs数组的函数的新副本。

如果我要向调用数组添加一个函数,我希望只有一个函数 - 并且在数组中只有对它的引用。

如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

函数是一种javascript对象,通过引用传递或赋值 - 将函数引用放入数组中不会复制函数。