Odkryłem to, przypadkowo odrzucając function
słowo kluczowe. Zwykle foobar
metoda w module poniżej zostanie zadeklarowana jako foobar: function(arg1)
, ale co ciekawe, poniższe działa, przynajmniej w niektórych przeglądarkach, np. Wersja Chrome 44.0.2403.157 m, ale nie działa w IE 11.0.9600.17959
Jak to możliwe, że w ogóle działa w dowolnej przeglądarce? Czy to nowa funkcja ES6?
var module = {
foobar(arg1) {
alert(arg1);
}
};
module.foobar("Hello World");
Odpowiedzi:
15 dla odpowiedzi № 1Jak to możliwe, że w ogóle działa w dowolnej przeglądarce? Czy jest to jakaś nowa funkcja ES6?
tak.
...
Definicje metod
Właściwość obiektu może również odnosić się do funkcji lub gettera lub metoda ustawiania.
var o = { property: function ([parameters]) {}, get property() {}, set property(value) {}, };
W ECMAScript 6 dostępna jest skrótowa notacja, dzięki czemu słowo kluczowe „funkcja” nie jest już konieczne.
// Shorthand method names (ES6) var o = { property([parameters]) {}, get property() {}, set property(value) {}, * generator() {} };
...
4 dla odpowiedzi nr 2
ES6 na to pozwala „zwięzłe metody” które, jak już zauważyłeś, nie są jeszcze kompatybilne z różnymi przeglądarkami.