2

我在 TypeScript 中写了这样的对象字面量:

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

我得到了这样生成的 JavaScript:

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

在 return 语句之前不应该有这样的行:

 var _that = this;

当我使用箭头函数表达式时?

4

2 回答 2

2

你是对的。它缺少:

var _this = this;

这是在发布(0.8)之后发现的,目前已在开发人员分支上修复。

注意:我也认为你想写

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

它实际上会在运行时打印说。见:http ://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

于 2012-10-09T23:03:53.067 回答
2

=>这里有点危险,因为严格来说,它绑定this到封闭范围的this. 在正确的代码生成中,该var _this = this;行位于对象字面量之上say,您的函数仅返回undefined.

当您真正想要引用将出现在封闭范围this中的表达式时,您只想在表达式中使用。在这种特殊情况下,您不需要(您想要内部范围,即对象文字本身)。=>thisthis

于 2012-10-09T23:25:03.490 回答