解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象,根据函数的调用方式的不同,this会指向不同的对象
1.以函数的形式调用时, this永远都是window
function fun() {
console.log(this); //window
}
fun();
2.以方法的形式调用时,this就是调用方法的那个对象
function fun() {
console.log(this); //window
}
fun();
var obj = {
name: 'sxl',
age: 19,
gender: '女',
address: '贵州',
sayName: fun
}
obj.sayName() //this指向obj
3.当以构造函数的形式调用时,this就是新创建的那个对象
4.使用call和apply调用时,this是指定的那个对象