次のような関数がある場合:
function showAlert() {
alert("1");
}
ページの別の部分にある同じ関数に追加機能をバインドする方法はありますか?
このような:
function showAlert() {
alert("1");
alert("2");
}
次のような関数がある場合:
function showAlert() {
alert("1");
}
ページの別の部分にある同じ関数に追加機能をバインドする方法はありますか?
このような:
function showAlert() {
alert("1");
alert("2");
}
古い関数を呼び出す新しい関数で関数を上書きできます。
function showAlert() {
alert("1");
}
showAlert = (function (original){
return function () {
original();
alert("2");
}
}(showAlert));
showAlert();
JS では関数は単純にオブジェクトとして扱われるため、関数の配列を保持してから、各関数をループで実行できます。これにより、実行トレインを中断することなく、任意のタイプの関数をコレクションに追加できます (インデックスを保持している場合は後で削除することもできます)。
var funk = [];
funk.push(function showAlert1()
{
alert("1");
});
funk.push(function showAlert2()
{
alert("2");
});
funk.push(function showAlertFromMsg()
{
alert("You passed " + this);
});
for(var i=0,len=funk.length; i<len; i++) funk[i].call("This is my message");
さて、関数を単純に再定義できます。
function showAlert() {
alert("1");
}
var originalShowAlert = showAlert;
showAlert = function(){
originalShowAlert();
alert("2");
}
showAlert();