JavaScript 类继承

2024-05-05

谁能告诉我为什么我的“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(使用前将#替换为@)

JavaScript 类继承 的相关文章

随机推荐