【问题标题】:Can methods be defined in an object initializer without using the `function` keyword?是否可以在不使用 `function` 关键字的情况下在对象初始化器中定义方法?
【发布时间】:2025-12-26 21:30:12
【问题描述】:

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

var obj = {a(toto){console.log("func a: ", toto);} };

然后我尝试了:

obj.a("hello");
> func a:  hello

它奏效了。

我真正想说的是:

var obj = {a: function(toto){console.log("func a: ", toto);} };

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

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

【问题讨论】:

    标签: javascript object


    【解决方案1】:

    这是 ECMAScript 6 语法。根据您的环境 - 节点与浏览器 - 使用此语法可能合适也可能不合适(例如,不支持跨浏览器)。

    给定以下代码:

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

    您现在可以将其缩短为:

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

    参考: Method definitions (ES6)

    【讨论】:

      最近更新 更多