js中的this

1普通函数的中的this
在普通函数中,进行调用,函数中的this指向的就是windows上下文
例如:

function a(){
	console.log(this.x) // 打印10
}
let x = 10 

其他形式的函数调用
例如定义在对象中的函数

let demo = {
	let a = 10;
	let b = 20;
	function x(){
		console.log(this.a) //打印10
	}
}

demo.x()

因为是demo这个对象调用的方法,所以this指向的demo这个对于对象。谁调用他this就指向谁
2在构造函数中的this
在构造函数中的this,这个this是比较的重要也是比较的复杂的

function Person(){
	this.a = 1;
	this.b = 2;
}

let person = new Person();

new这个操作符是创建一个对象
1 let obj = new Object() 创建了一个新的object对象,也就是在内存中开辟一个对象,并且让一个对象指向这个开辟的空间
2然后让this指向这个新开辟的空间,即this = obj
3把构造函数中的this全部都换成obj,即执行构造函数中的代码,对这个刚开辟的空间进行初始化赋值的一个操作。或者说是(复制备份)

但是,有一个要注意的点。就是返回对象的时候,this指向的是这个对象

function A(){
	this.x = 1;
	return {}
}
let a = new A()
console.log(a.x)  //undefine

只要返回的不是基本类型,this的指向就会改变,指向这个返回的对象

可以改变this指向的方法有apply(),bind(),call()方法

箭头函数的this是不会改变,一直指向的都是这个函数内的上下文。就算是apply,call方法都不能改变它

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值