jsバインディングイベントthis指向が変わる問題解決方法

1191 ワード

関数は次のように拡張できます.
 
  
Function.prototype.bind = function(obj) {
var _this = this;
return function() {
_this.apply(obj,arguments);
}
}
使い方は以下の通りです
 
  
var a = function(){
alert(this.title)
}.bind(document);
a();
ここでよく使う
 
  
function myalert() {
this.title = 'hello world';
this.init = function() {
$("#xxx").click(this.close.bind(this));
}
this.close = function() {
alert(this.title)
}
}
 
  

var a  = new myalert();

a.init();