JavaScript 中的 this 含义有很多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。JavaScript 中函数的调用有以下几种方式:
作为对象方法调用、 作为函数调用、 作为构造函数调用、 使用 apply 或 call,bind 调用
1.作为对象方法调用
函数作为一个对象的属性时,叫做对象的方法,使用这种调用方式,this 被绑定到该对像
var obj = {
a : 0,
getValue: function() {
console.log(this.a); //0
}
}
2.作为函数调用
函数也可以直接被调用,此时 this 绑定到全局对象
var a = 1;
function test() {
console.log(this); //window
console.log(this.a) //1
}
test();
3、 作为构造函数调用
this 指代new 出的对象
function Fun() {
this.name = 'haha';
console.log(this) // Fun {name: "haha"}
}
var fun = new Fun();
console.log(fun.name); //haha
4、使用 apply 或 call,bind 调用
call、apply方法作用是改变函数的调用对象,this指代第一个参数