Объявление функции внутри объекта / класса
У меня следующий вопрос: в Node/Javascript, почему это объявление функции неправильно внутри объекта или класса?
var obj = {
function x() {
/* code */
},
bar: function() {
/* code */
}
};
первое объявление функции x()
причина
function x() {
^
SyntaxError: Unexpected identifier
я не понимаю, почему я не могу использовать function
Ключевое слово внутри объекта или класса, какая разница при использовании function x()
или просто x()
, просто x()
работает нормально, но добавление function
Ключевое слово перед ним - причина вышеуказанной проблемы. Зачем?
2 ответа
в Node/Javascript, почему это объявление функции неправильно внутри объекта или класса?
Конечно, это неправильно, в JavaScript object
это пары ключ / значение, разделенные запятой. С помощью вашего кода вы нарушаете этот синтаксис, потому что вы не объявляете свойство в вашем случае, вам нужно указать ключ перед записью function x()
,
Если вы ссылаетесь на ссылку инициализатора объекта MDN, вы можете увидеть, что:
Инициализатор объекта - это разделенный запятыми список из нуля или более пар имен свойств и связанных значений объекта, заключенных в фигурные скобки ({}).
И если вы посмотрите разделы "Новые записи в ECMAScript 2015 " в Документах, вы увидите разницу между написанием function x()
, x()
или просто x()
,
И в соответствии с документами это возможные синтаксисы определения метода:
var o = {
property: function (parameters) {},
get property() {},
set property(value) {}
};
Вам необходимо назначить ключ в Javascript их объектам, второй работает, потому что у вас есть назначенный ключ, который является баром, в первом нет. Попробуйте добавить ключ перед объявлением функции, например так:
var obj = {
foo:function x() {
/* code */
},
bar: function() {
/* code */
}
};