Javascript 对象内的命名函数?为什么这样做?

use*_*288 2 javascript anonymous-function internet-explorer-11

我在编写一些代码时偶然发现了这一点:

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

obj.myFunc();
Run Code Online (Sandbox Code Playgroud)

我想输入的是:

var obj = {
  myFunc: function() { 
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

我没有注意到我不小心输入了第一个,直到我意识到我的代码没有在 IE11 中运行。

为什么第一个示例适用于 Chrome/Firefox,而不适用于 IE11?

另外,如果这是官方语言功能,这叫什么?

mrm*_*reg 6

它是一个Enhanced Object Literal,它是 es6 语法。更正式地说,对象初始值设定项允许方法定义,而不是像以前的版本那样只允许键/值对。

该表讲述了“对象文字扩展”下的兼容性故事。简短的回答是 IE11 尚未实现该功能。