0

目前,我已经定义了一个构造函数,它将使用私有变量 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 数组的函数的新副本。

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

如何做到这一点?

4

1 回答 1

3

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

于 2013-03-17T01:16:49.040 回答