Подтвердить что ты не робот

Нет двоеточия после имени свойства в объявлении объекта, действительно ли оно?

Я ввел это выражение в Firefox и Chrome Dev Console, и я задаюсь вопросом, почему он действителен JavaScript:

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

x затем устанавливается объект с свойством "a" , содержащий функцию с именем "a" с идентификатором аргумента "b". Как этот действительный синтаксис JavaScript? Двоеточие отсутствует после "a" , и я не понимаю определения функции.

4b9b3361

Ответ 1

Это синтаксический сахар ES6/ES2015 (Сокращение свойств). С ES6:

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

равно

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

    },
    c: c
};

Ответ 2

В JavaScript, когда вы пишете:

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

Он будет считать это:

var x = { 
    a: function (b) {

     }
   }

Например, вы можете проверить это, и это устранит ваши сомнения:

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

Это вызовет функцию, которая присваивается свойству a объекта x.