我不确定这是什么问题... oneTime
是仅包含“ init”的数组; doLoop
是仅包含“更新”的数组;当我尝试从oneTime
调用函数时,它将生成错误Uncaught TypeError: Cannot read property 'init' of undefined
。如果在同一地点将this
登录到控制台,则原型将按预期显示init函数。
无论如何,对我而言,真正的怪异之处在于,以完全相同的方式从doLoop
调用的函数执行得很好。
有什么想法吗?
State.prototype.run = function() {
let _that = this;
// Case 1
for (var a = 0; a < oneTime.length; a++) {
this.prototype[oneTime[a]]();
}
// Case 2
for (var a = 0; a < oneTime.length; a++) {
_that.prototype[oneTime[a]]();
}
// Case 3
!function() {
for (var a = 0; a < oneTime.length; a++) {
_that.prototype[oneTime[a]]();
}
}();
// Case 4
this.run.intervala = setInterval(function() {
for (var a = 0; a < oneTime.length; a++) {
_that.prototype[oneTime[a]]();
}
}, 1000 / fps);
// Case 5
this.run.interval = setInterval(function() {
for (var a = 0; a < doLoop.length; a++) {
_that.prototype[doLoop[a]]();
}
}, 1000 / fps);
}
-编辑-
还有更多的玩法吗?情况1、2和3都返回Cannot read property 'init' of undefined
但是,情况4执行得很好……尽管是循环的。我在这里想念什么?