var a = {
name: 'A',
func: function(e){
var _element = e.target;
$(_element).css( {'background-color':'#87a9e8'} );
$('#callback0').val('Hello ' + this.name);
$("#btn0").off("click", this.func);
}
};
var b = {
name: 'B',
func: function(e){
$('#callback1').val('Hello ' + this.name);
}
};
var c = {
name: 'C',
func: function(e){
$('#callback2').val('Hello ' + this.name);
}
};
var d = {
name: 'D',
func: function(e){
$('#callback3').val('Hello ' + this.id);
}
};
var bClick = $.proxy(b.func, b);
$('#btn0')
.on('click', $.proxy(a.func, a))
.on('click', bClick)
.on('click', $.proxy(c.func, a))
.on('click', d.func);
$.proxy('関数', 'オブジェクト')
'関数'内のthisを、'オブジェクト'として使用することができる。
サンプルコード内
$.proxy(c.func, a)
cクラスのfunc関数内のthisが、aオブジェクトとして参照することができます。
$.proxy()をプロパティとして格納することも可能です。
var bClick = $.proxy(b.func, b);
ボタン