解析器在调用函数没次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称之为函数执行的上下文对象。
根据函数的调用方式不同,this会指向不同的对象。

  1. 以函数的形式调用时,this永远都是window。
  2. 以方法的形式调用时,this就是调用方法的那个对象。
  3. 当以构造函数的形式调用时,this就是新创建的那个对象。
  4. 使用call和apply调用时,this是指定的那个对象(call和apply里的第一个参数)。
  5. 在事件的响应函数中,响应函数是给谁绑定的,this就是谁。
//创建构建一个函数
function fun(){
  console.log(this.name);
}

//创建对象
var obj={
 name:"孙悟空",
 sayName:fun
};

var obj2={
 name:"八戒",
 sayName:fun
};
              
var name="全局name属性";
//以方法的形式调用this就是调用方法的对象
obj.sayName();//孙悟空
obj2.sayName();//八戒
//以函数的形式调用,this就是window
fun();//全局name属性
Last modification:April 7, 2020
如果觉得我的文章对你有用,请随意赞赏