Javascript中this对象的解释

在Javascript中this对象的四种表现形式

1.普通函数中直接调用

该模式就是直接在函数的外部,直接调用该函数执行。
function fun1(){
			this.age = 18;
			console.log(this);
		}
		fun1();//函数外部
在普通函数中,当函数被调用时,该函数中this对象指向的是 window对象。


这是因为在函数外部调用fun1函数,其实隐式的用window对象去调用该函数。
上面的代码等价于:
function fun1(){
			this.age = 18;
			console.log(this);
		}
		window.fun1();

2.对象构造器调用模式

当使用new关键字时,此时,Fun2函数本质上就相当于一个构造函数。
function Fun2(){
			this.age = 18;
			console.log(this);
		}
		var obj = new Fun2();//通过构造器进行调用

因此,构造函数中的this对象,就是一个Fun2类的对象。

3.对象方法调用模式

就是创建一个Fun3的对象实例,然后通过该实例对Fun3中的方法进行调用。
function Fun2(){
			this.age = 18;
			this.sayHi = function(){
				console.log(this);//this代表obj这个对象
			}
		}
		var obj = new Fun2();
		obj.sayHi();//通过对象实例调用sayHi方法。

需要说明的是,所有事件响应的方法都是使用该模式进行调用!

例如: 给一个a标签添加click事件
tag_a.click = function(){
			this.innerHTML = "this代表tag_a这个节点元素";
		}
this本身就是事件源对象。

4.对象冒充的调用模式

即不创建原有Fun4的实例,通过call和apply的方式,强行将this的指向改变,冒充Fun4对象的实例。

function Fun4(a,b,c){
			this.result = a + b + c;
		}
		//这里不创建任何Fun4的对象
		var obj = {};//创建一个空对象,null
		Fun4.call(obj,1,2,3);//将obj这个对象指向Fun4这个类,this也将指向obj
		//同理,apply
		Fun4.call(obj,[1,2,3]);//只不过apply方法的第二个参数是一个数组






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值