【发布时间】:2019-06-27 22:58:47
【问题描述】:
在 ES6 中,这两个都是合法的:
var chopper = {
owner: 'Zed',
getOwner: function() { return this.owner; }
};
并且,作为简写:
var chopper = {
owner: 'Zed',
getOwner() { return this.owner; }
}
是否也可以使用新的箭头功能?在尝试类似
var chopper = {
owner: 'John',
getOwner: () => { return this.owner; }
};
或
var chopper = {
owner: 'John',
getOwner: () => (this.owner)
};
我收到一条错误消息,提示该方法无权访问this。这只是语法问题,还是不能在 ES6 对象中使用粗箭头方法?
【问题讨论】:
-
在使用粗箭头语法时?仅当您通过首先创建
chopper对象,然后在this指向该对象的函数中执行赋值来更改this值时。这可以通过构造函数非常干净地完成。 -
此演示将在 Firefox 中运行。 Chrome 还没有。 jsfiddle.net/bfyarxfe
-
@fox,你必须在那个 jsfiddle 上使用'use strict'。
-
@fox:它在受支持的环境中运行良好。 Firefox 还没有完全的支持。在Continuum 和
console.log()方法调用的结果中试一试。它有效。 -
Mozilla 文档说 没有自己的 this 或 super 绑定,不应该用作方法 Mozilla Arrow function documentation
标签: javascript ecmascript-6 ecmascript-harmony