<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>