我有一个调用更新函数的构造函数
"use strict";
function C2D() {
this.gameObjects = [];
this.update = function() {
console.log(this);
for (let i = 0; i < this.gameObjects.length; i++) {
if (this.gameObjects[i].framesSinceInstantiation === 0) {
if (typeof this.gameObjects[i].start === "function") {
this.gameObjects[i].start();
}
} else {
if (typeof this.gameObjects[i].update === "function") {
this.gameObjects[i].update();
}
}
this.gameObjects[i].framesSinceInstantiation++;
}
requestAnimationFrame(this.update);
};
};
const Crescendo = new C2D();
Crescendo.update();
第一次运行Crescendo.update,
这=渐强(对象)
但是第二次运行,
this = null
并引发错误。
那么为什么它变为null,它如何可修复?
足够有趣的是,我可以调用Crescendo对象代替它,而不是调用它,但这只会使代码不可读且混乱