this

133 阅读1分钟

this是关键字 this只能在函数内部使用

  1. 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
  1. 函数作为对象的调用方法,this指向这个对象
var a=1;
function foo(){
    console.log(this.a);
}
var object={
    a:2,
    f:foo
}

object.f();  //2
a   //1
  1. 构造函数 this指向对象
var a=1;
function foo(){
    this.a=2;
}
var obj=new foo();

obj.a   //2
a   //1
  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

Javascript的this用法