谁能告诉我为什么我的'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.
任何人?
谢谢 :)
原因startEngine是从那里调用setInterval.在此调用回调函数的方式使startEngine以具有不同的值this比startEffect.您需要保存this以便在回调中维护它.例如.
Blink.prototype.startEffect = function () {
var self = this;
self.idEffect = setInterval(function () { self.startEngine(); }, 1000 / 45);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |