あなたが言及した配列は、ある種の関数テーブルのようです。
var igtbl_ptsBand = ["func1", function() { }, "func2", function() { } ]
オーバーライドだけでなく、チェーンを使用することをお勧めします。チェーンを使用すると、独自のコードを挿入できますが、それでも元の関数を呼び出すことができます。「func2」とチェーンを置き換えたいとしましょう。あなたはこのようなことをすることができます:
var origFunc, findex, ix;
if (igtbl_ptsBand.indexOf) {
// indexOf is supported, use it
findex = igtbl_ptsBand.indexOf("func2") + 1;
} else {
// Crippled browser such as IE, no indexOf, use loop
findex = -1;
for (ix = 0; ix < igtbl_ptsBand.length; ix += 2) {
if (igtbl_ptsBand[ix] === "func2") {
findex = ix + 1;
break;
}
}
}
if (findex >= 0) {
// Found it, chain
origFunc = igtbl_ptsBand[findex];
igtbl_ptsBand[findex] = function() {
// Your new pre-code here
// Call original func (chain)
origFunc();
// Your new post-code here
};
}
もちろん、origFuncには引数がある場合があります。また、JavaScriptのcall()関数を使用して、「thisポインター」を特定の何かに設定することもできます。
origFunc.call(customThis, arg1, arg2...);
引数が配列内にある場合は、call()の代わりにapply()を使用できます。