箭头函数的this、箭头函数与普通函数的区别
一、箭头函数与普通函数的区别
1、箭头函数的this与普通函数不一样
2、箭头函数不可用作构造函数(箭头函数没有自己的this)
3、箭头函数没有prototype属性
4、箭头函数不能使用arguments、super、new.target方法和属性
二、箭头函数的this
1、箭头函数的this是在定义函数的时候绑定、而不是执行时绑定、指向固定化
2、箭头函数的this、继承父执行上下文中的this(即外部代码块的this)
举例1:
var x = 11
var obj = {
x:22,
say:() => {
console.log(this.x)
}
}
//箭头函数与say:平级,箭头函数在对象obj中,而obj的父执行上下文为window 所以输出 11
obj.say()
举例2:
尽头函var obj = {
birth: 1990,
getAge: function () {
var b = this.birth
var fn = () => new Date().getFullYear()-this.birth
return fn();
}
}
obj.getAge();// 32
//箭头函数再getAge中定义,因此getAge父执行上下文this为obj,因此this.birth = 1990 输出 32
思路:
1、先找到箭头函数平级
2、再找父执行上下文中的this