这个对象方法定义如何在没有“function”关键字的情况下工作?

我意外地发现了这个关键字的function 。 通常在下面的模块foobar方法将被宣布为foobar: function(arg1) ,但有趣的是,以下工作,至少在一些浏览器,如Chrome版本44.0.2403.157米,但它在IE 11.0.9600.17959

这怎么可能在任何浏览器中运行呢? 这是一些新的ES6功能?

 var module = { foobar(arg1) { alert(arg1); } }; module.foobar("Hello World"); 

这怎么可能在任何浏览器中运行呢? 是一些新的ES6功能?

是的 。

方法定义

对象的属性也可以指函数或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() {} }; 

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