Как это определение объекта объекта работает без ключевого слова "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");
Ответы
Ответ 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 позволяет "сжатые методы" , которые, как вы обнаружили, еще не совместимы с кросс-браузером.