"this"关键字在js中的工作原理

在js中,关键字“”this“”用于引用当前执行代码的上下文对象它的工作原理是根据函数的调用方式来确定其绑定的值它的值会根据函数的调用方式而变化。下面解释几种常见的 "this" 绑定规则:

1. 默认绑定:“this”默认绑定到全局对象(在浏览器环境中是window对象,在Node.js中是global对象)

function sayName() {
  console.log(this.name);
}

var name = "John";
sayName(); // 输出:John

2.隐式绑定:当函数作为对象的方法调用时,this绑定到调用该方法的对象。

let person = {
   name:'John',
   sayName:function(){
      console.log(this.name)  
  }    
}
person.sayName()// 输出:John

3.显式绑定:通过call, apply, bind方法可以显示指定函数的执行上下文。

function sayName() {
  console.log(this.name);
}

var person = {
  name: "John"
};

sayName.call(person); // 输出:John

4. new绑定:当使用new关键字创建一个实例对象时,this绑定到新创建的实例对象。

function Person(name) {
  this.name = name;
}

var john = new Person("John");
console.log(john.name); // 输出:John

5.箭头函数:箭头函数没有自己的this绑定,他会继承外层作用域的this值。

var person = {
  name: "John",
  sayName: function() {
    setTimeout(() => {
      console.log(this.name);
    }, 1000);
  }
};

person.sayName(); // 输出:John

 

posted @ 2023-06-19 14:33  想要魔法棒  阅读(28)  评论(0编辑  收藏  举报