1.作为对象
function person(){
this.name="xl";
console.log(this);
console.log(this.name);
}
person();
//输出 window xl
因为本质是window.person()
第一个console 是进行输出对象window
第二个console 是进行输出对象window的name属性 就是x1
var name="xl";
function person(){
console.log(this.name);
}
person(); //输出 xl
2.作为方法
例子一:
var name="XL";
var person={
name:"xl",
showName:function(){
console.log(this.name);
}
}
person.showName(); //输出 xl
//这里是person对象调用showName方法,很显然this关键字是指向person对象的,所以会输出name
var showNameA=person.showName;
showNameA(); //输出 XL
//这里将person.showName方法赋给showNameA变量,此时showNameA变量相当于window对象的一个属性,
因此showNameA()执行的时候相当于window.showNameA(),即window对象调用showNameA这个方法,所以
this关键字指向window
例子2:
var personA={
name:"xl",
showName:function(){
console.log(this.name);
}
}
var personB={
name:"XL",
sayName:personA.showName
}
personB.sayName(); //输出 XL
//虽然showName方法是在personA这个对象中定义,但是调用的时候却是在personB这个对象中调用,因此this对象指向
跟着最初设定的最前面的对象!!!!!