lovelmh13 / myBlog

个人博客 记录菜狗的学习之路
6 stars 0 forks source link

箭头函数为什么不能做构造函数,它与普通函数有什么区别 #90

Open lovelmh13 opened 3 years ago

lovelmh13 commented 3 years ago

箭头函数没有自己的 this,也没有原型对象(prototype)

在 new 的时候,会生成一个 obj ,然后把 obj 的 proto 指向 构造函数的原型对象(prototype)上,来继承原型上的方法。因为尖头函数没有原型,所以报错。

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

  1. 不绑定 this,不支持 call apply bind
  2. 不绑定 arguments
  3. 没有 prototype
  4. 原型上的函数,不能使用箭头函数
    
    function Person(name){
    this.name = name
    }

// 原型函数使用箭头函数,其中的this指向全局对象,而不会指向构造函数 // 因此访问不到构造函数本身,也就访问不到实例属性 Person.prototype.say = ()=>{console.log(this.name)}