Объявление функции внутри объекта / класса

У меня следующий вопрос: в 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 */
  }
};
Другие вопросы по тегам