this是javascript中的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如:
function test(){
this.x = 1;
}
随着函数适用场合的不同,this的值会发生变化。但有一个总的原则,那就是this指的是,调用函数的那个对象。
1.全局环境中的this
var a = 10;
alert(this.a);
this.b = 20;
alert(b);
c=30;
alert(this.c);
全局环境中的this指向全局对象,全局对象在浏览器中指的是window对象,但是在node.js里面指的不是window对象哦~
2.构造器中的this
function Person(name,age){
<strong>this</strong>.name = name;
<strong>this</strong>.age = age;
<strong>this</strong>.sayHello = function(){
alert("Hello, " + this.name);
}
}
var p1 = new Person("lily",20);
构造器中的this指的是新创建的对象。
3.函数中的this
function Person(name,age){
this.name = name;
this.age = age;
this.sayHello = function(){
alert("Hello, " + <strong>this</strong>.name);
}
}
var p1 = new Person("lily",20);
函数里面的this指向函数的调用者,在这个例子中,调用sayHello函数的是对象p1。
4.new Function中的this
(function(){
var f = new Function("alert(this)");
f();
})();
function Foo(){
this.bar = function(){
var f = new Function("alert(this)");
f();
}
}
var foo = new Foo();
foo.bar();
用new Function创建对象时,里面的this都是指的全局对象,即window对象。
5.eval的this 调用上下文中的this
(function(){
eval("alert(this)");
})();
function Foo(){
this.bar = function(){
eval("alert(this)");
}
}
var foo = new Foo();
foo.bar();