在Javascript中定义对象方法的两种方法有什么区别?

时间:2015-11-07 05:41:34

标签: javascript function object

在阅读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

1 个答案:

答案 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等)