lovelmh13/myBlog

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

Opened this issue · 0 comments

箭头函数没有自己的 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)}