如果没有“function”关键字,此对象方法定义如何工作?

How does this object method definition work without the "function" keyword?

提问人:Dexygen 提问时间:9/5/2015 最后编辑:BergiDexygen 更新时间:3/9/2016 访问量:8155

问:

我通过不小心遗漏了关键字来发现这一点。通常,以下模块中的方法将被声明为 ,但有趣的是,至少在某些浏览器中,例如Chrome版本44.0.2403.157 m,但在IE 11.0.9600.17959中失败functionfoobarfoobar: function(arg1)

这怎么可能在任何浏览器中运行?这是某种新的 ES6 功能吗?

var module = {
    foobar(arg1) {
        alert(arg1);
    }
};

module.foobar("Hello World");
JavaScript 函数 方法 ECMAScript-6 简写

评论


答:

32赞 user229044 9/5/2015 #1

这怎么可能在任何浏览器中运行?是某种新的 ES6 功能吗?

是的

...

方法定义

对象的属性也可以指函数或 getter 或 setter 方法。

var o = {
  property: function ([parameters]) {},
  get property() {},
  set property(value) {},
};

在 ECMAScript 6 中,可以使用速记表示法,以便 关键字“function”不再是必需的。

// Shorthand method names (ES6)
var o = {
  property([parameters]) {},
  get property() {},
  set property(value) {},
  * generator() {}
};

...

评论

0赞 nicovank 1/10/2017
正如你所看到的,在第一种情况下,行为正常。使用速记方法名称会引发错误。看这里new o.preperty()new o.property()
14赞 Joseph 9/5/2015 #2

ES6 允许“简洁的方法”,正如你所发现的,这些方法还不能跨浏览器兼容。