現在、私はプライベート変数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つだけにしたいのですが、配列にはその関数への参照だけがあります。
これはどのように達成できますか?