"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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!