this是关键字 this只能在函数内部使用
- this是全局调用的
function foo(){
console.log(this.a=1);
}
foo(); //1
var a=1
function foo(){
console.log(this.a);
}
foo(); //1
var a=1
function foo(){
this.a=2;
console.log(this.a);
}
foo(); //2
a //2
- 函数作为对象的调用方法,this指向这个对象
var a=1;
function foo(){
console.log(this.a);
}
var object={
a:2,
f:foo
}
object.f(); //2
a //1
- 构造函数 this指向对象
var a=1;
function foo(){
this.a=2;
}
var obj=new foo();
obj.a //2
a //1
- apply函数
var a=1;
function foo(){
console.log(this.a);
}
var object={
a:2,
f:foo
}
object.f.apply(); //1
object.f.apply(object); //2
object.f.call(); //1
object.f.call(object); //2
a //1
当apply参数为空时,调用的是全局对象
var a=1;
function foo(){
var a=2;
console.log(this.a);
}
foo() //1
foo.call(foo) //undefine
var a=1;
function foo(){
var a=2,
self=this;
console.log(self.a);
}
foo() //1
foo.call(foo) //undefine