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“