JavaScript this个人理解

来源:互联网 发布:天正建筑软件学习 编辑:程序博客网 时间:2024/05/16 08:34

一.调用公共函数,this默认指向的为window

直接上几个代码

1.

var a = 10;function test(){test.a=20;alert(this.a);}test();
结果10

2.

var a =10;function test(){test.a=20;alert(this.a);test1();}function test1(){alert(this.a);}test();
结果:10    10

3.

var a = 10;function test(){var a;a = 5;alert(a);alert(this.a);}test();
结果: 5       10

结论:

从上面的代码的结果来看, this指向的对象为window,每当alert(this.a) 此时的值都是a=10;

在每次调用test()来看,都没有给test绑定对象(除window外,因为 test(); <==> window.test();),故此时的this默认指向为window,而所有的公共变量都可以以这种

方式来写:window.a = 10 <==> var a = 10 

故每次的alert(this.a) <==> alert(window.a)  

所以结果为 10


二.给函数绑定对象

直接上代码

1.

<span style="white-space:pre"></span>var a = 10;var b = function(){b.a = 20;alert(this.a);}b.c = function(){alert(this.a);}b();b.c();
结果: 10       20

2.

<span style="white-space:pre"></span>var a =10;function test(){test.a = 20;this.a = 30;}b = new test();alert(test.a);alert(b.a);
结果: 20      30


结论:

代码二1中第一个this.a 仍然是指向window alert(this.a) <==>alert(window.a);

第二个this.a则指向b对象,因为函数是这么定义的 b.c = function(){};  所以该函数绑定了b对象(该函数的拥有者),故调用该函数b.c();函数中this指向b对象 

alert(this.a); <==> alert(b.a);

代码二2中的原理也是一样

创建一个b实例对象 test() 函数绑定的对象就是b(该函数的拥有者)  在函数test()  this指向b,所有this.a <==> b.a  


 

0 0
原创粉丝点击