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

IT技术 javascript function methods ecmascript-6 shorthand
2021-01-25 16:21:58

我通过不小心遗漏了function关键字发现了这一点通常,foobar下面module中方法将被声明为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个回答

这怎么可能在任何浏览器中运行?是某种新的 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() {}
};

...

正如您所看到的,在第一种情况下,new o.preperty()行为正常。使用速记方法名称new o.property()会引发错误。这里
2021-04-09 16:21:58

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