正文: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 );
解释器还是会报错的。
本文探讨了在JavaScript中使用prototype1.5.1版本时遇到的事件绑定问题,即绑定事件后函数内部的this指向发生变化,导致无法直接访问类成员变量,并提供了通过保存当前this引用(refThis)的方法来解决这一问题。
866

被折叠的 条评论
为什么被折叠?



