JS中的this指向

总体规则

js中的this指向谁?
谁调用了函数,this就指向谁!

  • this只能指向对象
  • this指向取决于函数在哪儿调用,不取决于this写在哪儿
  • this指向函数的调用者

举例:

通过函数名()直接调用,指向window

function func(){
	console.log(this);
}
func();//window

通过对象.函数名()调用,指向对象

function func(){
	console.log(this);
}
//自己定义的对象
var obj={
	name:'testObj',
	objFunc:func
};
obj.func();//obj

//dom对象
document.getElementById('divNode').onclick=function(){
	console.log(this);//divNode
}

特殊情况

箭头函数的this只取决于外层(函数或全局)的作用域 和前面的有所不同

function test1(){
	return function(){
		console.log(this.a);
	}
}
let a=2;
let obj={
	a:3,
	test:test1
};
let runTest=obj.test;
runTest();//2  普通函数 谁调用this就指向谁
function test2(){
	return ()=>{
		console.log(this.a);
	}
}
let a=2;
let obj={
	a:3,
	test:test2
}let runTest=obj.test;
runTest();//3  箭头函数 只取决于外层作用域

Vue中的this

vue的生命周期钩子方法(create,mount,update,destroy)里面的this都指向调用它的Vue实例
methods和data方法中的this也指向Vue实例

setTimeout

setTimeout中的this是指向window的!!!在Vue代码中使用这个方法时要注意
但是使用箭头函数了 又会改变this指向

methods:{
	getItem(){
		setTimeout(()=>{
			console.log(this);//vue实例
		},1000);
		setTimeout(function(){
			console.log(this);//window
		},1000);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值