「yesno」入力ラジオがあります。ユーザーが[はい]をクリックするとyesDivが表示され、ユーザーが[いいえ]をクリックするとnoDivが表示されます。
それを実装するために、オブジェクトmyObjectを作成しました。
var myObject= {
init: function(config){
this.config=config;
this.config.InputRadio.bind('click',this.config,this.switchDiv);
},
switchDiv: function(ev){
self=ev.data;
if ($(this).val()==1){
self.divYes.hide();
self.divNo.show();
}else{
self.divYes.show();
self.divNo.hide();
}
}
}
myObject.init({
InputRadio:$("input[name=yesno]"),
divYes:$("#yesDiv"),
divNo:$("#noDiv")
});
これは機能します。関数内の「this」のスコープのため、これを使用してメソッド「switchDiv」内のオブジェクトのプロパティを参照することはできません。関連する質問(独自のオブジェクトプロパティの参照)で、 this.configをパラメーターとして送信し、 self=ev.dataを使用するという解決策を見つけました。
しかし、今私の質問は次のとおりです。オブジェクトのメソッドからオブジェクト自体のプロパティにアクセスするときはいつでも、メソッドのパラメーターとしてそれらを渡さなければならないという事実は少し奇妙ではありませんか?それを回避するためにオブジェクトを宣言するより良い方法はありませんか?