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

时间:2015-09-04 18:39:46

标签: javascript function methods ecmascript-6 shorthand

我意外地忽略了function关键字,从而发现了这一点。通常,下面模块中的foobar方法将被声明为foobar: function(arg1),但有趣的是以下工作,至少在某些浏览器中,例如Chrome版本44.0.2403.157 m,但在IE 11.0.9600.17959

中失败

在任何浏览器中,它都可以运行吗?这是某种新的ES6功能吗?

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

module.foobar("Hello World");

2 个答案:

答案 0 :(得分:17)

  

在任何浏览器中,它都可以运行吗?是某种新的ES6功能吗?

Yes

  

...

     

方法定义

     

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

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

在ECMAScript 6中,有一个速记符号可供使用   不再需要关键字“功能”。

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

...

答案 1 :(得分:5)

ES6允许"concise methods",正如您所发现的那样,它还不是跨浏览器兼容的。