JS的this指向简单说就是谁调用指向谁,但在使用时往往分不清谁进行了调用,下面会分享,我平时总结的this指向
在全局时this的指向时window,
在函数里面时,谁调用函数,this就指向谁,
举例:
function fn1(){
console.log(this)
}
fn1()
这时调用函数的是window,所以this也指向window
let obj={
a:function fn2(){
console.log(this)
}
}
obj.a()
这时调用函数的是obj这个对象,所以this也指向obj这个对象
平时工作中常用的一种方式是把this赋值给一个变量,这样可以帮助我们更好掌握this的指向,以免发生错误
let vm=this
当然,我们也可以使用bind、apply、call这三种方法直接改变this指向
let obj={a:1}
function fn1(a,b){
console.log(this)
console.log(a,b)
}
fn1.bind(obj)(1,2)
想要传函数的参数时要在后面再加上一个小括号
function fn1(a,b){
console.log(this)
console.log(a,b)
}
fn1.apply(obj,[1,2])
apply的第一个参数是this的指向,后面需要传递函数的参数,要以数组的类型写
function fn1(a,b){
console.log(this)
console.log(a,b)
}
fn1.call(obj,1,2)
apply的第一个参数是this的指向,后面需要传递函数的参数,直接写就行
以上就是我对JS指向方面的一些理解