正文:javascript事件绑定后this变义问题的解决[prototype1.5.1]
函数绑定为事件以后,里面的this就变成了绑定的那个对象。
var MyClass = Class.create();
MyClass.prototype = {
m_sText : “test”,initialize : function(){
var refThis = this;
Event.observe( window, “focus”, function(){
// 在这里的this指的是window
// 所以解释器会报错
this.m_sText = “……”;// 前面加上refThis的定义,问题解决。
// refThis不会被解释器回收!
refThis.m_sText = “!!!”;
});
},__updateText : function(){
// 这里会报错
refThis.m_sText = “××××”;
}
};
但如果把事件绑定的那段代码改为:
Event.observe( window, “focus”, this.__updateText );
解释器还是会报错的。