您的位置:首页 > Web前端 > JavaScript

JavaScript this个人理解

2014-11-08 16:58 120 查看
一.调用公共函数,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  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息