Ответ 1
Это синтаксический сахар ES6/ES2015 (Сокращение свойств). С ES6:
const obj = {
a(b) {
// Shorthand method
// `this` context is `obj`
},
c
};
равно
var obj = {
a: function a(b) {
},
c: c
};
Я ввел это выражение в Firefox и Chrome Dev Console, и я задаюсь вопросом, почему он действителен JavaScript:
var x = { a (b) {} };
console.log(x);
x
затем устанавливается объект с свойством "a" , содержащий функцию с именем "a" с идентификатором аргумента "b".
Как этот действительный синтаксис JavaScript? Двоеточие отсутствует после "a" , и я не понимаю определения функции.
Это синтаксический сахар ES6/ES2015 (Сокращение свойств). С ES6:
const obj = {
a(b) {
// Shorthand method
// `this` context is `obj`
},
c
};
равно
var obj = {
a: function a(b) {
},
c: c
};
В JavaScript, когда вы пишете:
var x = { a (b) {} };
Он будет считать это:
var x = {
a: function (b) {
}
}
Например, вы можете проверить это, и это устранит ваши сомнения:
var x = { a (b) { console.info('function called') } };
x.a();
Это вызовет функцию, которая присваивается свойству a
объекта x
.