this ,是javaScript 中的关键字,他代表在函数运行时,在内部产生的一个对象,只能在函数内部使用
函数总是变化的,所以this也总是变化的,但是有一点,this指的是,调用函数的那个对象
1.纯粹的函数调用
function test(){
this.x=1;
}
此处的this 是window 对象,那么如何来验证呢
test();
alert(x); 或者alert(window.x); 输出的都是 1
还有一种
var x =3;
function test(){
alert(this.x);
}
test();
输出: 3 证明是this 是window 对象
再变化一下
var x=2;
function test(){
this.x=5;
}
test();
alert(x);
输出: 5 证明是this 是window 对象
当不用new 的时候,this,指向window
2.函数作为对象方法调用,与作为对象的方法调用 是一一样的
function test(){
alert(this); //[object Object]
alert(this.x);
}
var o={};
o.x=0;
//o.m=test();// 这是一个赋值语句,如果将test() 赋值给o.m 由于test()并没有返回值,所有我们看不到o.m 的值,如果test 函数体里面写的是 return "aaaa";
//则o.m 的值为aaa
o.m=test;// 将函数体赋值给m变量
o.m();// 将函数作为对象的方法调用 this 改变 弹出0
3.作为构造函数调用
所谓构造函数,就是通过构造函数生成一个新对象
function test(){
this.x=1;
}
var t=new test();
alert(t.x); //1
那么怎么确定 this 是哪个对象呢,下面做如下的验证
var x=1212;
function test(){
this.x=1;
}
var t=new test();
alert(t.x);// 1
题记:在javaScript 中new 关键字的作用是什么呢?
是在创建一个新的对象的时候,才使用关键字new ,new test() 他是一种创建对象的语法,不必深究为什么要这样写。
4.apply()调用
apply() 是函数对象的一个方法 ,作用是改变函数的调用对象,他的第一个参数就是改变后的调用这个函数的对象
因此this 指向的就是这个改变调用函数后的对象,如果参数为空,则默认表示的是window 全局 对象
var x=12;
function test(){
alert(this.x);
}
var o={};
o.x=1;
o.m=test;
o.m.apply(); //12
在改一下,传入参数:
var x=12;
function test(){
alert(this.x);
}
var o={};
o.x=1;
o.m=test;
o.m.apply(o); //1 将this 转交给o 弹出1
到此this 的使用方法介绍完毕,自己也明白了,this 的用法,以后如果遇到新的this 用法会增加到此文档中,敬请关注,文档说明参考网上
http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
作者所写。
总结:本次文档总共介绍了4种this 的用法,
1.this 作为全局对象
2.this 作为函数对象
3.this 作为构造函数的新对象
4.this 使用apply()作为被传递进来的对象,如果没有参数,则this 为全局对象