浏览器在调用函数时,每次都会向函数内部传递进一个隐含的参数。这个隐含的参数就是this。this指向的是一个对象,称为函数执行上下文对象,根据函数调用方式不同,this会指向不同对象。
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this就是调用方法的那个的对象
在一个对象中绑定函数,称为这个对象的方法,和普通函数也没啥区别,但是它在内部使用了一个this关键字。
var name ="全局";
function fun(){
console.log(name);
}// 创建一个函数
var obj ={
name:"孙悟空",
sayName:fun
}//创建一个对象
var obj2 ={
name:"猪八戒",
sayName:fun
}
调用函数fun(); 输出全局
想要调用对象中的name时
obj.sayName();
obj2.sayName();输出的都是全局
所以我们要这样写
function fun(){
console.log(this.name);
}
obj.sayName();输出孙悟空
obj2.sayName();输出猪八戒
this可以根据调用者的不同切换不同的值