javascript中的this

C#和java中,this是当前类的实例;javascript中呢?有点乱,理一理吧:

 我的感觉,javascript 中 this指向函数的调用者。。

 1  <script>
2 var test={
3 "obj":null,
4 "func1":function(){
5 this.obj="obj";
6 function inner(){
7 this.obj = "haha";
8 }
9 inner();
10 }
11 }
12 test.func1();
13 alert(test.obj);
14 </script>



 你认为会弹出什么呢?“haha“,还是”obj“呢?

答案是?”obj"

第4行,func1是个闭包,显示this.obj="obj",在闭包里调用了inner函数,里边又来了一句this.obj="haha",表面上看,给obj赋值“obj”在前,给obj赋值:“haha”在后,为啥最终的结果是“obj”呢?

     关键就是this代表的是什么;

 第12行,test.func1();调用者是test对象,那么 第5行,它的this指的是test;

            inner函数是由func1去调用的,所以inner里的this指的是func1,而不是test,归结起来最后输出test.obj,自然是”obj"而不是”haha“

 

 

转载于:https://www.cnblogs.com/xinchuang/archive/2011/11/21/2257126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值