2021-04-27

本文详细探讨了JavaScript中this的四种常见指向:默认指向全局对象(在浏览器中为window),作为函数调用时,this为全局对象;作为方法调用时,this指向调用该方法的对象;在构造函数中,this指向新创建的对象;通过call和apply方法可以显式改变this的指向。通过示例代码展示了各种情况下的this行为。
摘要由CSDN通过智能技术生成

      this对象

 

我们刚接触this的时候;觉得this的指向一种;当时觉得被它弄到头大;

所以今天就聊聊this的指向。

解析器在调用函数每次都会向函数内部传递一个隐含的参数

     这个隐含的参数就是this,this指向的是一个对象,

     这个对象我们称为函数执行的上下文对象,

     根据函数调用方式不同,this会指向不同的对象

总结this

       this : 默认指向 window 对 象

         1.以函数的形式调用时,this永远都window

2.以方法的形式调用是,this就是调用方法的那个对象

3.当以构造函数的形式调用时,this就是新创建的对象

4.使用callapply改变this的指向,

call()方法可以将实参在对象之后依次传递

                  fun1.call(obj,12,34);

apply() 方法需要将实参封装到一个数组统一传递

                  fun1.apply(obj,[12,34]);

 

代码解析:

	<script>
/*
		1.以函数的形式调用时,this永远都是window
		2.以方法的形式调用是,this就是调用方法的那个对象
*/
	function fun(a,b){//形参
		console.log("a="+a+", b="+b);
//		console.log(this);
	}
	fun(12,34);//实参
	
	function sayHello(){
		console.log(this);
	}
	sayHello();
	var obj={
		name:"zhangsan",
		sayWord:sayHello
	};
	obj.sayWord();//函数以方法的形式被调用时,this指向的是调用方法的对象
/*
	call()与apply()
		- 这两个方法都是函数对象的方法,需要通过函数对象来调用
		- 当对函数调用call()和apply()都会去调用函数执行
		- 在调用call()与apply()可以将一个对象指定为第一个参数
			此时这个对象将会成为函数执行时的this
		- call()方法可以将实参在对象之后依次传递
		- apply() 方法需要将实参封装到一个数组中统一传递
*/
		function fun(){
//		console.log("这是一个函数");
		console.log(this);
	}
	var obj={
		name:"xiaoming",
		age:23
	};
	function fun1(a,b){
		console.log("a="+a+",b="+b);
		console.log(this);
	}
	fun1(12,34);
	fun1.call(obj,12,34);
	fun1.apply(obj,[12,34]);
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值