"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 @   想要魔法棒  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示