Невозможно вызвать функцию на прототипе - PullRequest
0 голосов
/ 02 октября 2018

Я не совсем уверен, в чем проблема ... 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 Тем не менее, Case 4 выполняется очень хорошо ... хотя и в цикле.Что мне здесь не хватает?

...