可以在对象初始值设定项中定义方法而不使用`function`关键字吗?

Fra*_*cis 4 javascript object

前几天我有点累了,我写了这个JavaScript代码:

var obj = {a(toto){console.log("func a: ", toto);} };
Run Code Online (Sandbox Code Playgroud)

然后我试过:

obj.a("hello");
> func a:  hello
Run Code Online (Sandbox Code Playgroud)

它奏效了.

我真正打算写的是:

var obj = {a: function(toto){console.log("func a: ", toto);} };
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:为什么第一个代码有效?

是否有某个文档可以解释它,您认为我可以使用它吗?(它可以在所有浏览器中使用吗?)

Ada*_*dam 9

这是ECMAScript 6语法.根据您的环境 - 节点与浏览器 - 使用此语法可能会或可能不建议(例如,不支持跨浏览器).

给出以下代码:

var obj = { foo: function() {}, bar: function() {} };

您现在可以将其缩短为:

var obj = { foo() {}, bar() {} };

参考: 方法定义(ES6)