Javascript类继承

Mar*_*nha 2 javascript

谁能告诉我为什么我的'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)
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我创建:

_blink = new Blink(myDiv);
_blink.startEffect();
Run Code Online (Sandbox Code Playgroud)

你可以测试......变量'showDiv_boo',在方法中是未定义的.

即使如果我将方法中的showDiv_boo设置为true,它也不会调用我的类的方法showDiv或hideDiv.

任何人?

谢谢 :)

Jar*_*Par 5

原因startEngine是从那里调用setInterval.在此调用回调函数的方式使startEngine以具有不同的值thisstartEffect.您需要保存this以便在回调中维护它.例如.

Blink.prototype.startEffect = function () { 
  var self = this;
  self.idEffect = setInterval(function () { self.startEngine(); }, 1000 / 45);
};
Run Code Online (Sandbox Code Playgroud)