谁能告诉我为什么我的“showDiv_boo”在类的方法中未定义?
我也无法访问我的类的方法。
这是我的“Blink”类及其属性和方法:
function Blink(div) {
this.div = div
}
Blink.prototype.counter = 0
Blink.prototype.showDiv_boo = true
Blink.prototype.showDiv = function() {
this.div.style.visibility = 'visible'
}
Blink.prototype.hideDiv = function() {
this.div.style.visibility = 'hidden'
}
Blink.prototype.startEngine = function() {
if (this.showDiv_boo) {
this.showDiv()
} else if (!this.showDiv_boo) {
this.hideDiv()
}
this.showDiv_boo = !this.showDiv_boo
this.counter++
}
Blink.prototype.startEffect = function() {
this.idEffect = setInterval(this.startEngine, 1000 / 45)
}
所以,如果我创建:
_blink = new Blink(myDiv);
_blink.startEffect();
您可以测试...变量“showDiv_boo”在方法内未定义。
即使我将方法内的 showDiv_boo 设置为 true,它也不会调用我的类的方法 showDiv 或 hideDiv。
Anyone?
谢谢 :)
原因是这样的startEngine
被调用自setInterval
。调用此回调的方式会导致startEngine
具有不同的价值this
than startEffect
。你需要保存this
为了在回调中维护它。例如。
Blink.prototype.startEffect = function () {
var self = this;
self.idEffect = setInterval(function () { self.startEngine(); }, 1000 / 45);
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)