为什么在这种情况下此关键字为null?

时间:2019-09-07 08:55:41

标签: javascript

我有一个调用更新函数的构造函数

"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对象代替它,而不是调用它,但这只会使代码不可读且混乱

0 个答案:

没有答案