Javascript中箭头函数的动机是什么?

Aja*_*aur -1 javascript ecmascript-6 arrow-functions

我一直在使用Javascript.最近他们在ES6中增加了箭头功能,这些功能也有好处

  1. 简短语法
  2. 范围安全 this
  3. 明晰

但是它有一些使用箭头功能的缺点:

  1. 它不继承Function原型
  2. 我们不能将它与具有动态上下文的回调函数一起使用
  3. 不能用作构造函数

我想问下面的事情:

  1. 他们为什么不继承Function原型?
  2. 他们是否在javascript中增加了使用函数式编程?(背后的动机)

我问这个是因为mdn页面说它没有原型,但没有解释为什么它没有原型.

我阅读了Eric Elliot的这个系列文章,我认为我们正在使用javascript中的函数式编程方法,并且由于计划发布,我们是否有机会在不久的将来删除OOPS?

Ber*_*rgi 6

它不继承Function原型

他们当然会这样做.

Object.getPrototypeOf(() => {}) === Function.prototype
Run Code Online (Sandbox Code Playgroud)

我们不能将它与动态上下文的回调函数一起使用,也不能用作构造函数

是的,从词汇this范围逻辑上来看.

他们是否在javascript中增加了使用函数式编程?

不,它们是为了简化编写功能,例如回调.当然这使得它们对函数式编程也很有用,但我认为这不是主要动机.词汇this是一个明确的OOP功能.

  • @AjayGaur这意味着()=> {}`中的``prototype'是假的,与继承无关.它们不需要该属性,因为它们不是可以实例化对象的构造函数. (3认同)
  • 原型**属性**,而不是没有原型. (2认同)