js中this的二种表现形式及改变this的指向

本文深入探讨了JavaScript中的this对象的概念、用法及在不同场景下的行为变化,包括对象内部、事件监听器、构造函数等场景。通过具体代码示例展示了如何通过apply、call和new操作符改变this的指向,以及this在不同上下文环境下的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 <script>
	//这里this代表window
	var obj=function(){
		alert(this);//window
	}
	obj();

	//这里this代表window
	function obj(){
		alert(this);//window
	}
	obj();

	//这里this代表obj这个对象
	var obj={
		a:function(){
			alert(this==window);
		}
	}
	obj.a();
	
	//-----改变this指向--------
	//方式一,通过apply来改变
	obj.a.apply(window);//打印true


	//方式二,通过call来改变
	obj.a.call(window);//打印true



	//方式三,通过new来改变
	function Person(name,age){
	   this.name=name;
	   this.age=age;  this.sayName=function(){alert(this.name);};
	 }
	 var p1 = new Person("mokai",27);
	 var p2 = new Person("gongkai",24);
	 p1.sayName();//打印mokai 
	 p2.sayName();//打印gongkai
</script>


百度百科:

上下文对象
上下文对象指的就是this对象。它是一个只能读取而不能直接赋值的对象(就是你只能对this拥有的属性和方法赋值)。上下文对象在javascript可以说发挥的淋漓尽致。
如果你在一个对象(Object)中使用this,指的就是这个对象
var obj={
getThis:function(){
return this;
}
};
alert(obj.getThis===obj); // true
同样的,在作用域中已经提到过文档中javascript对象都属于window,那么下面这个例子
alert(window===this);
也将提示true。
上下文对象在事件侦听器中指的就是发生事件的对象
document.body.addEventListener('click',function(){
alert(this===document.body); // true
},false);
this在构造函数中则是指实例
function Person(name){
thisname=name;
}
var Sam=new Persom();
这里this指的就是Sam。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值