This指针指向问题

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

一.this指向例子

 1.window

        <script type="text/javascript">
			//01 函数内部的this指向的是window
			function aa(){
				var men = "leon";
				console.log(this.men);//undefined
				console.log(this);//window 
			}
		</script>

按照上面我们说的那样,this的最终指向的是调用它的对象,这里的函数aa实际上是最终指向的window,而window里面是没有men的,所以第一个是undefined,第二个则是window。

2.this指向的是对象本身

        <script type="text/javascript">
			//02 对象内部的this指向的是对象本身
			var bb ={
				'men':"leon",
				fn:function(){
					console.log(this.men)//leon
				}
			}
			bb.fn();
		</script>

说明:这里的this指向的是对象bb,因为你调用这个fn是通过bb.fn()执行的。所以我们可以说明一点,this的指向在对象创建的时候是决定不了的,在调用的时候才能够决定,谁调用就指向谁。

3.this里a指的是谁

        <script type="text/javascript">
			var cc = {
				a:99,
				b:{
					a:100,
					fn:function(){
						console.log(this.a);
					}
				}
			}
			cc.b.fn();
		</script>

说明:这里的this指向的是对象b里面的a,谁调用就指向谁。

4.三种方法

        <script type="text/javascript">
			function test(){
				alert(this.x);
			}
			//var o = {};
			//o.x = 1;
			//o.m = test;
			//o.m();//1
			
			// var o = new Object();
			// o.x = 1;
			// o.m = test;
			var o = {
				x:1,
				m:function(){
					alert(this.x)
				}
			}
			o.m()
		</script>

情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window(但是这里需要说明的是js的严格版中this指向的不再是window,这个问题在这里不谈)

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

情况3:如果一个函数中有this,这个函数包含多个对象,尽管这个函数是被最外层的对象所调用,this也只是指向的它上一级的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值