在阅读Eric Elliot撰写的这篇文章https://medium.com/javascript-scene/the-single-biggest-mistake-programmers-make-every-day-62366b432308时,我遇到了以下类型的对象方法定义。
var obj = {
getX() {
document.write('X');
}
}
obj.getX(); // X
它与以下类型的定义有何不同?
var obj = {
getX: function getX() {
document.write('X');
}
}
obj.getX(); // X
答案 0 :(得分:5)
第一种表示法是ES2015 / ES6简写符号,不适用于safari或Internet Explorer
docs:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions
因为第一个是第二个的速记符号,这意味着就功能而言,没有区别 - 然而,直到Internet Explorer已经死亡并且埋葬并且safari赶上(或者跟随)互联网资源管理器到同一个坟墓)不建议面向公众的网站使用第一个表示法,因为语法更改不可能有“shim”或“polyfill”
最重要的是,大多数“原生移动”浏览器都不支持此功能(不是讨论chrome / firefox for android等)