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