閉じる

JavaScriptで onChangeリスナーに thisを渡したい

普通の関数はこんな感じで登録できるけど、クラスメソッドを登録したい時はどうするか。

9063-0.js
function hoge()
{
console.log('onchange called');
}
select_tag.onchange=hoge;

bindを使ってこんな感じにかける。

9063-1.js
class funi{
setCallback()
{
const caller=function(obj){
obj.onChange();
};
select_tag.onchange=caller.bind(null,this);
}
onChange()
{
console.log('onchange called');
}
}

単に「bind(this)」ではなく「bind(null,this)」となっているのは onchangeの呼び出し規約の問題。

FYI: JavaScript か jQuery で、onchangeのタイミングで呼び出される関数へ、任意の値を引数として渡したい – スタック・オーバーフロー

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)