解析器在调用函数每次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this。
this指向的就是一个对象,这个对象我们称为函数执行的上下文对象,根据函数调用方式不同,this会指向不同的对象
1.以函数的形式调用时,this永远都是Window
2.以方法的形式调用时,this就是调用方法的那个对象
function fun(){
//console.log("a="+a+",b="+b);
console.log(this.name);
}
fun( ):
//创建一个对象
var obj={
name:"孙悟空",
sayName:fun
};
var obj2={
name:"沙和尚",
sayName:fun
};
//console.log(obj.sayName==fun);
var name="全局的name属性";
//obj.sayName();
//以函数形式调用,this是window
//fun();
//以方法形式的调用,this是调用方法的对象
//obj.sayName();
//创建一个name变量
var name="全局";
//创建一个fun()函数
function fun(){
console.log(this.name);
}
//创建两个对象
var obj={
name:"孙悟空",
sayName:fun
};
var obj2={
name:"沙和尚",
sayName:fun
};
//我们希望调用obj.sayName()时可以输出obj的名字
obj.sayName();