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学习笔记,内容来源于极客时间《重学前端》,推荐该课程。

相关内容

热门资讯

C++ STL常用的排序算法、... 1 常用排序算法 学习目标: 掌握常用的排序算法 算法简介: sort ...
大数据技术之Hive 第1章 Hive入门1.1 什么是Hive1)Hive简介Hive是由Facebook...
设备修缮类合同范本共18篇 设备修缮类合同范本 第一篇甲方:乙方:甲、乙双方就甲方委托乙方对甲方的机械设备进行维修事宜,经协商一...
婚前签下协议书范文(优选20... 婚前签下协议书范文 第一篇甲乙双方经自由恋爱,双方准备结婚,都愿共筑爱巢,白头到老,但为防止今后可能...
苗木买卖合同范本推荐19篇 苗木买卖合同范本 第一篇供方:______________需方:______________一、品种...
个人租房合同书样本 个人租房合同书样本出租方(甲方):xxx,男/女,xxxx年xx月xx日出生,身份证号码xxxxxx...
pandas学习(二)数据的引... 数据的引用 语法说明df[label]指定DataFrame对象的列标签并选择列df[[label1...
有哪些好看颜值高的蓝牙耳机?高... 我们在选购的时候不仅仅看看参数,还要看颜值,小巧轻便,时尚...
台州出租塔吊合同范本共11篇 台州出租塔吊合同范本 第一篇出租方(甲方):_________承租方(乙方):_________甲、...
财务人员用工合同范本5篇 财务人员用工合同范本 第一篇近来,财务人员成了职业倦怠的高发人群。那么签订财务人员劳动合同需要注意什...
华为OD机试用Python实现... 华为OD机试题 本篇题目:明明的随机数题目输入描述输出描述:示例 1输入输出说明 代码编写思路 ...
石材花盆购销合同范本精选20... 石材花盆购销合同范本 第一篇购货单位: (以下简称甲方)供货单位: (以下简称乙方)一、其产品名称、...
民生银行小额贷款合同范本 民生银行小额贷款合同范本  民生银行小额贷款合同范本(精选6篇)  在人们愈发重视契约的社会中,合同...
车辆路径问题理论与python... 问题来源 本文介绍了一类带容量约束的车辆路径问题 (Capacitated Vehicle Rout...
OKHttp 源码解析(一) 游戏SDK架构设计之代码实现——网络框架 OKHttp 源码解析(一) ...
ES6+新语法 目录 一、作用域: (1)局部作用域 (2&...
债的加入合同范本优选7篇 债的加入合同范本 第一篇出借人(甲方):身份证号:住址:电 话:借款人(乙方):身份证号:住址:电 ...
餐饮房屋租赁合同范本大全推荐... 餐饮房屋租赁合同范本大全 第一篇甲方:乙方:为更好提高门面的使用率,现根据国家有关法律规定,经甲、乙...
农用机械购置合同范本共20篇 农用机械购置合同范本 第一篇出租方:___________________承租方:_________...
全网最详细的OSPF综合实验 实验需求 area 0所有的路由器与帧中继交换机相连,实现全互联如图所示运行OSPFARBA 3学...