Отсутствует _this определение

голоса
1

У меня есть функция, определенная в объекте, как это:

    connect(callback?: (connected: bool) => void) {
        $.ajax(this.url + /connect, $.extend(true, {}, this.ajaxSettings, {
            success: (data) => {
                this.errorChecker(data, (data) => {
                    if (callback != null) {
                        callback(data);
                    }
                });
            },
            timeout: this.timeout,
            error: () => {
                if (callback != null) {
                    callback(false);
                }
            }
        }));
    }

Машинописи компилятор принимает, что и производит это:

        VAS.prototype.connect = function (callback) {
            $.ajax(this.url + /connect, $.extend(true, {
            }, this.ajaxSettings, {
                success: function (data) {
                    _this.errorChecker(data, function (data) {
                        if(callback != null) {
                            callback(data);
                        }
                    });
                },
                timeout: this.timeout,
                error: function () {
                    if(callback != null) {
                        callback(false);
                    }
                }
            }));
        };

Обратите внимание эту строку в ЯШАХ:

_this.errorChecker(data, function (data)

Компилятор правильно заметил мое использование => оператора и пришел к выводу , что thisв моей первоначальной машинопись следует обратиться к родительскому объекту , а не то , что thisслучается, когда обратный вызов на самом деле называется. Но, по какой - то причине компилятор забыл включить волшебную строку:

var _this = this;

В начале функции. Является ли это ошибка? Или это дизайн? Если он просто игнорировал _this / эта вещь вообще, я бы просто сказать, что я делаю это неправильно, но это происходит на полпути здесь, которая заставляет меня думать, что-то не так.

Обновление : странно это , кажется, проблема с компилятором в Visual Studio, если я копирую тот же код на детской площадке он работает , как ожидалось.

Задан 08/10/2012 в 18:33
источник пользователем
На других языках...                            


1 ответов

голоса
0

Это похоже на ошибку. Вы должны открыть рабочий элемент для отслеживания этого.

Ответил 08/10/2012 в 18:51
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more