this关键字
一、this关键字是一个非常重要的语法点,this在构造函数中表示实例对象,还可以用在其他场合,this的共同点就是总是返回一个对象,简单的说:this就是属性或者方法当前所在的对象
二、对象的属性是可以赋值给其他的对象,所以this的指向是可变的
三、实质
上面代码是将name对象赋值给arr,此时JaveScript引擎会先在内存里面,生成一个{name:'小红'}对象,然后把这个对象的内存地址赋值给变量arr,也就是说arr就是一个地址(reference),如果要读取arr.name,引擎先从obj拿到内存地址,然后再从该地址读出原始的对象,返回它的name属性
原始的对象以字典解构保存,每一个属性名都对应一个属性描述对象。比如上面的arr对象,实际是以下面的形式进行保存的
这样展示结构就很清楚,还有一种情况是属性的值可能是一个函数
这种引擎会将函数单独保存在内存中,然后再将函数地址赋值给arr属性的value属性
函数是一个单独的值,所以它可以在不同的环境(上下文)执行
三、使用场景
this的使用场景主要有以下几个
1.全局环境
全局环境使用this,指的就是顶层对象
上面代码说明,不管是不是在函数内部,只要在全局环境下运行,this指顶层对象
window
2.构造函数
构造函数中的this,指的是实例对象
3.对象的方法
this指向是方法运行时所在的对象,该方法复制给另一个对象,会改变this的指向
本文来自博客园,作者:danmo_xx,转载请注明原文链接:https://www.cnblogs.com/xx321/p/15630076.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~