对象声明中的属性名称后没有冒号,它是否有效?

时间:2016-12-15 14:05:25

标签: javascript

我在Firefox和Chrome开发者控制台中输入了这个表达式,我想知道为什么它是有效的JavaScript:

var x = { a (b) {} };
console.log(x);
然后将

x设置为具有属性" a"的对象。包含一个名为" a"带有参数标识符" b"。 这个有效的JavaScript语法怎么样? " a"我不明白功能定义。

2 个答案:

答案 0 :(得分:33)

这是ES6 / ES2015的合成糖(Property shorthand)。 使用ES6:

const obj = {
    a(b) { 
        // Shorthand method
        // `this` context is `obj`
    },
    c
};

等于

var obj = {
    a: function a(b) {

    },
    c: c
};

答案 1 :(得分:5)

在JavaScript中,当你写:

var x = { a (b) {} };

它会将其视为:

var x = { 
    a: function (b) {

     }
   }

例如,您可以查看此信息,这将清除您的疑问:

var x = { a (b) { console.info('function called') } };
x.a(); 

这将调用分配给对象a的属性x的函数。