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的指向

 

posted @   danmo_xx  阅读(221)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示