js之this指向

本文详细阐述了JavaScript中this的默认指向、上下文绑定规则,以及箭头函数的独特行为。通过实例讲解了普通函数与箭头函数this的不同,并总结了绑定规则:箭头函数随上下文,常规函数根据调用位置。
摘要由CSDN通过智能技术生成
this的指向不是在编写时确定的,⽽是在执⾏时确定的,同时,this不同的指向在于遵循了⼀定的规则。
⾸先,在默认情况下,this是指向全局对象的,⽐如在浏览器就是指向window。

其次,如果函数被调⽤的位置存在上下⽂对象时,那么函数是被隐式绑定的。
function f() {
console.log( this.name );
}
var obj = {
name: "Messi",
f: f
};
obj.f(); //被调⽤的位置恰好被对象obj拥有,因此结果是Messi

再次,显示改变this指向,常⻅的⽅法就是call、apply、bind
箭头函数不同于传统JavaScript中的函数,箭头函数并没有属于⾃⼰的this,
它的所谓的this是捕获其所在上下⽂的 this值,
作为⾃⼰的 this,并且由于没有属于⾃⼰的this,⽽箭头函数是不会被new调⽤的,
这个所谓的this也不会被改变.

1.使用普通函数
var obj={
	fn:function(){
		setTimeout(function(){
			console.log(this);
		});
	}
}
obj.fn();//window
这次this指向了最外层的window对象,为什么呢,还是那个道理,
这次this出现在全局函数setTImeout()中的匿名函数里,并没有某个对象进行显示调用,
所以this指向window对象


2.使用箭头函数
var obj={
	fn:function(){
		setTimeout(() => {
			console.log(this);
		});
	}
}
obj.fn();//object
this又指向函数的宿主对象了


总结:
1.箭头函数的this绑定看的是this所在的函数定义在哪个对象下,绑定到哪个对象则this就指向哪个对象

2.如果有对象嵌套的情况,则this绑定到最近的一层对象上


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都挺好,刚刚好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值