普通の関数はこんな感じで登録できるけど、クラスメソッドを登録したい時はどうするか。
9063-0.jsfunction hoge()
{
console.log('onchange called');
}
select_tag.onchange=hoge;
bindを使ってこんな感じにかける。
9063-1.jsclass 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のタイミングで呼び出される関数へ、任意の値を引数として渡したい – スタック・オーバーフロー