jQuery.proxy( function, context )
次のようにcontextにオブジェクトを渡すことによりfunction内のthisの値が変更する
<input type="button" id="btn1" value="Normal1" />
<input type="button" id="btn2" value="Normal2" />
$("#btn1").click(function(){
alert(this.value)// Normal1
});
$("#btn2").click($.proxy( function(){
alert(this.value)// Proxy
}, {
value:"Proxy"
}) );
元のthisも利用したいなというケースが多そうですが、それの取得方法はなさそうです。ちょっと使いにくいかな。
jQuery.proxy( context, name )
もうひとつの使い方は
nameにコンストラクタを設定して実行
var obj = {
name: "John",
test: function() {
console.log(this.name);
$("#btn2").unbind("click", obj.test);
}
};
$("#btn2").click($.proxy(obj, "test"));
コンストラクタのunbindなども出来る。これは便利。
ただ、これもやっぱり元のthisも利用したいな