箭头函数和普通函数的区别

1、箭头函数的this值在声明时就确认了,普通函数的this值,在调用的时候确认

2、call、apply、bind不会改变箭头函数this值,会改变普通函数this值

3、箭头函数不能作为构造函数使用,不能使用new

为什么箭头函数不能构造实例对象:

// 构造函数生成实例的过程

function Person(name,age){

        this.name = name this.age = age

}

var p = new Person('张三',18)

//new关键字生成实例过程如下

// 1. 创建空对象p var p = {}

// 2. 将空对象p的原型链指向构造器Person的原型 p.__proto__ = Person.prototype

// 3. 将Person()函数中的this指向p

// 若此处Person为箭头函数,而没有自己的this,call()函数无法改变箭头函数的指向,也就无法指向p。 Person.call(p)

构造函数是通过 new 关键字来生成对象实例,生成对象实例的过程也是通过构造函数给实例绑定 this 的过程,而箭头函数没有自己的 this。因此不能使用箭头作为构造函数,也就不能通过 new 操作符来调用箭头函数。

4、箭头函数没有原型属性

5、箭头函数不绑定arguments,取而代之用rest参数... 解决

6、箭头函数不能当做Generator函数,不能使用yield关键字

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 箭头函数是前端面试环节的一个高频考点,箭头函数是ES6的API,相信很多人都知道,因为它的语法比一般的函数更...
    dingFY阅读 160评论 0 0
  • 箭头函数与普通函数的区别,实质是我们是否理解了箭头函数,在我刚开始接触ES6时,印象中的箭头函数与普通函数的区别就...
    费莱姆阅读 770评论 0 1
  • 什么是箭头函数? 箭头函数就是没有function关键字,而是一个类似箭头的函数: 相当于 它们之间的区别: 箭头...
    郭静135阅读 1,190评论 0 0
  •   周末在阿里淘宝的电话面试中被问到箭头函数和普通函数的区别,没能回答全面,现进行总结如下:   ES6标准新增了...
    CheneyKing阅读 264评论 0 2
  • 1.首先,最直观的是箭头函数和普通函数外形不同,这个太直观了2.其次,看外形的时候就能看出来:箭头函数都是匿名函数...
    鸿泽云码阅读 346评论 0 0