js中This的指向问题

本文详细解析了JavaScript中this的指向规则,包括函数作为方法调用、对象属性调用、window对象默认指向,以及动态绑定的影响。通过实例演示了this在不同场景下的行为,并强调了函数调用链在决定this指向中的关键作用。
摘要由CSDN通过智能技术生成

1.js中的this最终指向的是那个调用它的函数[this:谁调用它就指向谁]

首先看下接下来的例子:

function lpy(){
            var men = "leon";
            console.log(this.men);
            console.log(this);
}
lpy();
按照上面我们说的那样,this的最终指向的是调用它的对象,这里的函数lpy实际上是最终指向的window,而window里面是没有men的,所以第一个是undefined,第二个则是window

2.如图:

var set ={ 
'men' : "leon",
 fn:function(){
 console.log(this.men)//leon 
}
 } 
set.fn();
说明:这里的this指向的是对象set,因为你调用这个fn是通过set.fn()执行的。所以我们可以说明一点,this的指向在对象创建的时候是决定不了的,在调用的时候才能够决定,谁调用就指向谁。

3.This在找到一个变量的同时就不会往下找 如下:

//例子:	
var name="The window";
			var object={
				name:"My object",
				NameFunc:function(){ //递归
					return function(){
						return this.name;
					}
				}
			}
	alert(object.NameFunc()());

4.这里的函数是由最外层的cou点出来的,但是this和上面一样并没有执行它,而是最终指向的po;所以我们可以推翻一开始说的那句话,并且总结如下
           如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window

var cou = {
 num:99,
     po:{
 num:100, 
fn:function(){
 console.log(this.num);//100
 }
 }
 }
 cou.po.fn();

还有一些补充:

1.如果一个函数中有this,这个函数有被上一级的对象所调用,this指向的是就是它上一级的对象。

2.如果一个函数中有this,这个函数包含多个对象,尽管这个函数是被最外层的对象所调用,this也只是指向的它上一级的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值