this是函数运行时自动生成的内部对象,this指的就是调用函数的那个对象。
函数调用的情况:
作为函数的调用
作为方法的调用
构造函数的调用
apply方法调用
作为函数的调用
var x = 0;
function log() {
console.log(this.x);
}
log(); //0
//这里的this就是window
作为方法的调用
function log() {
console.log(this.x);
}
var obj = {};
obj.x = 0;
obj.log = log;
obj.log(); //0
//这里的this是obj
构造函数的调用
function Person() {
this.name = "chinese";
}
var person = new Person();
console.log(person.name); //chinese
apply方法调用
var x = 1;
function log() {
console.log(this.x);
}
var obj = {};
obj.x = 0;
obj.log = log;
obj.log.apply(window); //1 window可省略
obj.log.apply(obj); //0