JavaScript this关键字的行为
创始人
2025-05-28 04:38:55
0

this 是 JavaScript 中的一个关键字,它的使用方法类似于一个变量,

this 是执行上下文中很重要的一个组成部分。同一个函数调用方式不同,得到的 this 值也不同

普通函数的 this 值由“调用它所使用的引用”决定,其中奥秘就在于:我们获取函数的表达式,它实际上返回的并非函数本身,而是一个 Reference 类型,Reference 类型由两部分组成:一个对象和一个属性值。当做一些算术运算(或者其他运算时),Reference 类型会被解引用,即获取真正的值(被引用的内容)来参与运算,而类似函数调用、delete 等操作,都需要用到 Reference 类型中的对象。

this :调用函数时使用的引用,决定了函数执行时刻的 this 值。

实际上从运行时的角度来看,this 跟面向对象毫无关联,它是与函数调用时使用的表达式相关。

在箭头函数中,不论用什么引用来调用它,都不影响它的 this 值

总结:this在生成器函数、异步生成器函数和异步普通函数跟普通函数行为是一致的,异步箭头函数与箭头函数行为是一致的

在 JavaScript 标准中,为函数规定了用来保存定义时上下文的私有属性[[Environment]]。当一个函数执行时,会创建一条新的执行环境记录,记录的外层词法环境(outer lexical environment)会被设置成函数的[[Environment]]。


var a = 1;
foo();在别处定义了foo:var b = 2;
function foo(){console.log(b); // 2console.log(a); // error
}

这里的 foo 能够访问 b(定义时词法环境),却不能访问 a(执行时的词法环境),这就是执行上下文的切换机制了。

this 则是一个更为复杂的机制,JavaScript 标准定义了 [[thisMode]] 私有属性。[[thisMode]] 私有属性有三个取值。lexical:表示从上下文中找 this,这对应了箭头函数。global:表示当 this 为 undefined 时,取全局对象,对应了普通函数。strict:当严格模式时使用,this 严格按照调用时传入的值,可能为 null 或者 undefined

此文章为3月Day14学习笔记,内容来源于极客时间《重学前端》,推荐该课程。

相关内容

热门资讯

最难做的饭打一成语谜语 最难做的饭打一成语谜语  谜语主要指暗射事物或文字等供人猜测的隐语,也可引申为蕴含奥秘的事物。 谜语...
“得寸则寸”的意思 “得寸则寸”的意思 成语拼音: [dé cùn zé cùn] ...
“眉来眼去”的意思 “眉来眼去”的意思 成语拼音: [méi lái yǎn qù] ...
元组和集合 元组和集合 1.元组 1.1 什么是元组(tuple) 元组是容器型数...
“老实巴交”的意思 “老实巴交”的意思 成语拼音: [lǎo shí bā jiāo] ...
SSTI模板注入漏洞讲解 SSTI模板注入 SSTI的概念 SSTI(Server-Side Template Injecti...
【迪文T5L屏幕二次开发】程序... 前言 通常情况下51单片机都支持ISP下载,T5L也不例外。 工具 这里要使用到官方的...
【JavaEE初阶】第七节.网... 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮...
形容人心情的成语 形容人心情的成语  成语是约定俗成的四字结构,字面不能随意更换,具有结构的凝固性。下面是小编收集整理...
励志成语 8字励志成语大全  四个字的'成语我们也司空见惯了.不过有些成语却是八个字的,咱们来看看都有哪些! ...
“指破迷团”的意思 “指破迷团”的意思 成语拼音: [zhǐ pò mí tuán] ...
成语接龙500字作文 成语接龙500字作文  成语接龙是中华民族传统的文字游戏。它不仅有着悠久的历史和广泛的社会基础,同时...
android桌面壁纸以及快捷... 改变壁纸 Android使用wallpaperManager来改变壁纸,所调用的接口方...
[计算机网络(第八版)]第一章... 章节作业 练习 (单选题)计算机网络系统的基本组成是 A. 局域网和广域网B. 本地计算机网和通信网...
“万应灵药”的意思 “万应灵药”的意思 成语拼音: [wàn yìng líng yào] ...
“唇红齿白”的意思 “唇红齿白”的意思 成语拼音: [chún hóng chǐ bái] ...
“田父野老”的意思 “田父野老”的意思 成语拼音: [tián fù yě lǎo] ...
“不当不正”的意思 “不当不正”的意思 成语拼音: [bù dāng bù zhèng] ...
Java——堆笔记+topk问... 目录 堆的概念 下标关系 初始条件 向下调整函数shiftDown createHeap函数 Pri...
【递归】8皇后问题用代码解决 目录 一、概述 ·N皇后问题是什么? ·怎么解决该问题? 二、C+...