Как это определение объекта объекта работает без ключевого слова "function"? - программирование
Подтвердить что ты не робот

Как это определение объекта объекта работает без ключевого слова "function"?

Я обнаружил это, случайно оставив ключевое слово function. Обычно метод foobar в приведенном ниже модуле будет объявлен как foobar: function(arg1), но интересно, что это работает, по крайней мере, в некоторых браузерах, например. Chrome версии 44.0.2403.157 м, но он не работает в IE 11.0.9600.17959

Как это возможно, что это вообще работает в любом браузере? Это какая-то новая функциональность ES6?

var module = {
    foobar(arg1) {
        alert(arg1);
    }
};

module.foobar("Hello World");
4b9b3361

Ответ 1

Как это возможно, что это вообще работает в любом браузере? Является ли какая-то новая функциональность ES6?

Да.

...

Определения методов

Свойство объекта также может ссылаться на функцию или геттер или метод setter.

var o = {
  property: function ([parameters]) {},
  get property() {},
  set property(value) {},
};

В ECMAScript 6 имеется сокращенная нотация, так что ключевое слово "функция" больше не требуется.

// Shorthand method names (ES6)
var o = {
  property([parameters]) {},
  get property() {},
  set property(value) {},
  * generator() {}
};

...

Ответ 2

ES6 позволяет "сжатые методы" , которые, как вы обнаружили, еще не совместимы с кросс-браузером.