JS学习总结4 this

1.this的指向问题

this关键字只与函数的执行环境有关,而与声明环境没有关系

1.对象的方法this指向调用方法的对象
2.普通函数this指向全局对象
3.匿名函数,定时器中的this指向全局对象
4.构造函数this指向new的实例对象
5.call,apply,bind方法参数重定向this指向

1.对象的方法
let obj={
			 show(){
				console.log(this);
			}
		}
			obj.show()				//输出 {show: ƒ}  
因为obj调用了show方法,this指向方法调用者obj对象,


2.普通函数
function normal(){
console.log(this);		//输出 window对象
}
//相当于
window.normal()
normal()

3.构造函数
class Person{		
			show(){
				function show2(){
					console.log("show2",this);
				}
				console.log("show1",this);
				show2()
			}
		}
		let person = new Person()
			person.show()//输出   show1 person对象   show2 undefined 
			
			person对象调用了方法,所以this指向方法调用者person对象,
			show2是show方法里的一个普通函数,类里的方法默认开启严格模式
			在严格模式下,全局对象会变更为undefined

4.call,apply,bind方法		
			第一个参数都是 this 的指向对象	
			call其他所有参数以,隔开
			apply其他参数以数组形式传入
			bind 返回值是函数,参数和 call 一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值