目前,我已经定义了一个构造函数,它将使用私有变量 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 数组的函数的新副本。
如果我要向调用数组添加一个函数,我希望只有一个函数——并且数组中只有对它的引用。
如何做到这一点?