私はjQueryを使用していますが、イベントコールバックとして機能する関数を持っています。その関数では、 "this"はイベントをキャプチャしたオブジェクトを表します。しかし、別の関数から関数を明示的に呼び出す場合があります。この場合、関数内で "this"が等しくなるように設定するにはどうすればよいですか?例えばJavascript関数を呼び出すとき、どのようにカスタム値 "this"を設定しますか?
:
function doStuff(el) {
$(el).removeClass("sad").addClass("happy");
}
function handleEvent(event) {
doStuff(this);
}
$("a.sad").click(handleEvent); // in this case, "this" is the anchor clicked
function differentEvent(event) {
$("input.sad").keydown(e) {
doSomeOtherProcessing();
doStuff(this);
}
}
代替:call()を使用します。これはapply()とまったく同じですが、引数の配列の代わりに一連の引数を渡す点が異なります。 (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/call) –
apply()とcall()は私が探していたものです(上記の答えのコードでは[ e]というのは、Danielが言ったように、apply()は一連の議論を取っているからです)。 – Charles
訂正していただきありがとうございます。私は答えを更新しました。 –