我有一堂课的结构是这样的
function myClass () {
this.varA = 0;
}
myClass.prototype.consts = {
someConst : 1,
anotherConst : 1000,
}
myClass.prototype.startIt = function () {
window.setTimeout(this.brokenFunc.bind(this), this.consts.anotherConst);
}
myClass.prototype.brokenFunc = function () {
this.varA += this.consts.someConst;
window.setTimeout(this.brokenFunc.bind(this), this.consts.anotherConst);
}
// Example call
var myObj = new myClass();
myObj.startIt();
这在大多数 Android 设备上都可以正常工作——但运行 Android 2.3 的用户现在告诉我它不起作用,我可以在模拟器中重现该错误。首先,它TypeError: Result of expression 'this.brokenFunc.bind' [undefined] is not a function
针对这一行(在 内startIt
)说:
window.setTimeout(this.brokenFunc.bind(this), this.consts.anotherConst);
很公平,我想,并用老var _this = this
把戏来绕过bind
电话。但现在它TypeError: Result of expression 'this.consts' [undefined] is not an object
在这一行中说
this.varA += this.consts.someConst;
我有点迷路了。这段代码怎么行不通?特别是因为它适用于大多数 Android 版本。