2017-01-06 2 views
0

Я наткнулся на это случайно при написании кода:Именованная функция внутри объекта Javascript? Почему это работает?

var obj = { 
 
    myFunc() { 
 
    document.body.innerHTML = 'Hello World!'; 
 
    } 
 
}; 
 

 
obj.myFunc();

То, что я имел в виду, чтобы тип был это:

var obj = { 
    myFunc: function() { 
    // ... 
    } 
}; 

я не заметил, я случайно напечатал прежде чем я понял, что мой код не работает в IE11.

Почему первый пример работает в Chrome/Firefox, а не в IE11?

Кроме того, если это официальный язык, , что это такое??

+0

Спасибо, но добавьте его в качестве ответа. – user2867288

+1

«Почему первый пример работает в Chrome/Firefox, а не в IE11?» - Потому что только два из них - современные браузеры. – Quentin

+0

Это современный ECMAScript, который действителен, но только в браузерах, которые могут его разобрать. – MiltoxBeyond

ответ

3

Это Enhanced Object Literal, что является синтаксисом es6. Более формально Object Initializers разрешает Method Definitions вместо пар только ключ/значение, как в предыдущих версиях.

This table рассказывает историю совместимости под «объектными буквальными расширениями». Короткий ответ заключается только в том, что IE11 не реализовал эту функцию.