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

Geo*_*pty 18 javascript methods function shorthand ecmascript-6

我意外地忽略了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");
Run Code Online (Sandbox Code Playgroud)

mea*_*gar 21

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

是的.

...

方法定义

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

var o = {
  property: function ([parameters]) {},
  get property() {},
  set property(value) {},
};
Run Code Online (Sandbox Code Playgroud)

在ECMAScript 6中,可以使用简写表示法,因此不再需要关键字"function".

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

...


Jos*_*eph 8

ES6允许"简明方法",正如您所发现的那样,它们还不是跨浏览器兼容的.