var a = 1;function fn(){
console.log(this)//Window
console.log(this.a)//1
};
fn();
2.作为对象方法被调用,这时this指向这个上级对象。
var a = 1;function fn(){
console.log(this)//this指向obj
console.log(this.a)//undefined
};
var obj ={};//创建一个全局对象obj
obj.b = fn;//调用obj里面的b,并将fn方法赋值给b
obj.b();//通过obj.b来调用这个方法
3.作为构造函数调用
所谓的构造函数就是通过这个函数,可以生成一个新的对象,而this指向的就是这个对象。
var a = 1;function fn(){
console.log(this)//this指向的是新构造出来的fn()
console.log(this.a)//undefind
};
var obj = new fn();//新构造出来的fn()
console.log(obj == fn())//false,因为这是一个新的函数
关于this的指向问题。1.纯粹的函数调用,this指向全局,windowvar a = 1; function fn(){ console.log(this)//Window console.log(this.a)//1 }; fn();2.作为对象方法被调用,这时this指向这个上级对象。var a = 1; function fn(){ console.log(this)//this指向obj console.log(this.a)//undefin