Это в машинописной стрелку определения?

голоса
2

Я написал такой литерал объекта в машинописном:

var object = {
    message: Say,
    say: () => {
        return this.message;
     }
};

И я получил такой сгенерированный JavaScript:

var object = {
    message: Say,
    say: function () {
        return _this.message;
    }
};

Не должны ли быть такой линии до возвращения заявления:

 var _that = this;

поскольку я использую выражение функции стрелки?

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


2 ответов

голоса
2

=>это немного опасности здесь , потому что, критически, он связывается thisс вложениями осциллографаthis . В правильной генерации коды var _this = this;линия проходит над объектом буквального и ваша sayфункция просто возвращает undefined.

Вы только хотите использовать thisв =>выражении , когда вы на самом деле хотите сослаться на thisчто будет присутствовать в области видимости объемлющего. В данном конкретном случае, вы не (вы хотите внутреннюю сферы this, то есть объект буквальных себя).

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

голоса
2

Вы правы. Отсутствуют следующие:

var _this = this;

Это обнаруживается после выпуска (0.8) и в настоящее время фиксируется на ветке проявителя.

Примечание: Кроме того, я думаю, что вы хотели написать

var object = {
    message: "Say",
    say: function () {
        return () => this.message;
    }
};

который будет actualy печати Say , когда он запущен. См: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

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

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