解析器在调用函数每次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this
this指向的是一个对象,这个对象我们成为函数执行的上下文对象
根据函数的调用方式不用,this会指向不同的对象:
1.以函数的形式调用时,this永远都是window // fun( ) ;
2.以方法的形式调用时,this调用方法的那个对象 // obj . sayHello ( ) ;
例:
var name = '全局' ;
function fun( ){
console.log( this.name ) ;
}
var obj = {
name : ' 李 ' ,
sayName : fun
}
var obj2 = {
name : ' 王 ',
sayName : fun
}
fun( ) ; // 全局
obj . sayName( ) ; // 李
obj2 . sayName( ) ; // 王
// 以函数形式调用,this的window
fun(); // 全局变量name的属性
// 以方法的形式调用,this是调用方法的对象(obj)
obj . sayName( ) ; // 孙悟空