<script type="text/javascript">
/*
* 解析器在调用函数每次都会向函数内部传递进一个隐含的参数,
* 这个隐含的参数就是this,this指向的是一个对象,
* 这个对象我们称为函数执行的上下文对象
*
* 根据函数的调用方式的不同,this会指向不同的对象
* 1.以函数的形式调用时,this永远都是window
* 2.以方法的形式调用时,this就是调用方法的那个对象
*/
function fun(){
console.log(this);//[object Window]
}
fun();
//-----------------------------------------------------------------------------------
function fun2(){
console.log(this);
console.log(this.name);//孙悟空
}
//创建一个对象
var obj = {
name:"孙悟空",
sayName:fun2
};
console.log(obj.sayName == fun2);//true
//调用的是同一个函数,结果却不同,根据函数的调用方式的不同,this会指向不同的对象
obj.sayName(); //[object Object]
fun2();//[object Window]
</script>
举例补充:
<script type="text/javascript">
//创建一个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();//孙悟空
obj2.sayName();//沙和尚
</script>