话不多说,看例子
例如
var name="全局";
function fun(){
console.log(this);
console.log(this.name);
}
var obj1={
name:"盖伦",
sayName:fun
};
var obj2={
name:"赵信",
sayName:fun
};
fun(); //this指向window 全局
obj1.sayName(); //this指向obj1 盖伦
obj2.sayName(); //this指向obj2 赵信
如图:
即:以方法形式调用this时,this是调用方法的对象
function Person(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.sayHello=function(){
alert("hello");
};
}
var per1=new Person("小王",18,"男");
var per2=new Person("小李",28,"男");
var per3=new Person("小马",20,"女");
如上图构造函数
即构造函数调用时,this就是指向创建的对象
- 以函数形式调用时,this是window
- 以方法形式调用时,this是调用方法的对象
- 构造函数调用时,this就是创建的那个对象