'前言 :
先来说一下this指向的问题 this指向在面试里面也会被经常的被问到 在开发里面也会遇到一些this指向的问题
经验有限 不足之处还望各位大佬指出来。
1 当我们在一个script的便签里面直接打印this的话。毫不疑问这个this会指向window ,就是当我们不对this进行任何操作或者绑定的话默认就是指向window
2 且看下面,我们来看一下,箭头函数里面的this指向问题
const name='window';
const obj={
name:'我是对象的名字',
showName(){//等同于 showName:function(){}
console.log(this.name)//打印出 '我是对象的名字'
},
showNameTest:()=>{console.log(this.name)}//这里会打印window
}
obj.showName()//这里的this指向的就是obj这个对象 既普通函数会对this做一个绑定既谁调用他 this就指向谁
obj.showNameTest()//这里的this会指向window 因为这里使用了箭头函数 箭头函数不会绑定this 箭头函数里面的this只会和函数执行时所在的区域有关
那如果我们想用showName这个函数来打印 window 此时我们就可以借用 call
apply bind这三个函数来处理了 这三个函数是用来改变this指向的
obj.showName.call(window)//这里把window这个对象传进去 使得函数内部的this指向window
那我们可不可以 showNameTest()让这个函数来打印obj的name呢 答案是不行的 通过这三个函数并没有办法改变箭头函数里面的this指向