《JavaScript 核心原理解析》学习笔记 Day 13 作用域 对象

news/2025/1/15 18:12:38/

        在 JavaScript 中,向没有声明的变量名赋值,会隐式地创建一个全局变量;全局变量会被绑定为全局对象(global)的属性。因此,JavaScript 的变量环境(或者全局环境)与对象系统就关联了起来。而对象闭包和函数闭包实现的环境被称为域(Scope)。所谓“使用 with 语句创建一个对象闭包”就简单地被实现为“向既有的作用域链尾加入一个新的 scope”。

        在 JavaScript 1.3 时代的执行环境,就是一个闭包链的管理。这种闭包既可以是对象的,也可以是函数的。在静态语法说明或描述时,其被称为作用域或域(Scope);在动态环境中则被称为上下文(Context)。

        在 JavaScript 中的对象本质上是属性集,这可以视为一个键值列表,而对象继承是由这样的列表构成的、称为原型的链。另一方面,执行的上下文就是函数或全局的变量表,这同样可以表达为一个键值列表,而执行环境也可以视为一个由该键值列表构成的链。

        在 JavaScript 中任何对象都有“constructor”这个属性,缺省指向创建它的构造器函数。ECMAScript 约定了所谓的“属性的性质(attributes)”,也就是可写性 writable、可列举性 enumerable 和可配置性 configurable。其中可列举性 enumerable  可以简单地理解为“一个属性是否能用 for…in 语句列举出来”,因此它也被称作可见性。ECMAScript 统一使用“属性描述符”来管理这些性质(可以通过 Object.defineProperty 读取和更改),并且 ECMAScript 约定:

        1. “constructor”缺省是一个不可列举的属性;

        2. 使用赋值表达式添加属性时,属性的可列举性缺省为true。

----- 极客时间 《JavaScript 核心原理解析》学习笔记 Day 13 ----- 


http://www.ppmy.cn/news/20469.html

相关文章

【算法】二分法 ② ( 排序数组中查找目标值 | 二分法的经典写法 | 在排序数组中查找元素的最后一个位置 | 二分法的通用模板 )

文章目录一、排序数组中查找目标值 ( 二分法的经典写法 )二、在排序数组中查找元素的最后一个位置 ( 二分法的通用模板 )一、排序数组中查找目标值 ( 二分法的经典写法 ) https://leetcode.cn/problems/binary-search/ 典型的二分查找题目 : 从一个 有序数组 中查找某个 目标值…

Lua 垃圾回收

Lua 垃圾回收 参考至菜鸟教程。 Lua 采用了自动内存管理。 这意味着你不用操心新创建的对象需要的内存如何分配出来, 也不用考虑在对象不再被使用后怎样释放它们所占用的内存。 Lua运行了一个垃圾收集器来收集所有死对象(即在Lua中不可能再访问到的对象&…

LeetCode-26. 删除有序数组中的重复项

目录题目分析双指针理解代码实现题目来源 26. 删除有序数组中的重复项 题目分析 解法: 双指针 首先注意数组是有序的,那么重复的元素一定会相邻。 要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。 考虑用 2 个指针,…

STM32—超声波测距

超声波简介 超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度, 计算出模块到前方障碍物的距离。 型号:HC-SR04 时序图 怎么让它发送波 Trig触发信号,给Trig端口至少10us的高电平…

Golang如何优雅接入多个远程配置中心?

本文基于viper实现了apollo多实例快速接入,授人以渔,带着大家读源码,详解实现思路,封装成自己的工具类并且开源。 前言 viper是适用于go应用程序的配置解决方案,这款配置管理神器,支持多种类型、开箱即用、…

介绍一款2023年新出的mysql管理工具: FlyBird Database Manager

FlyBird Database Manager 介绍 FlyBird Database Manager 是一款mysql 界面化管理工具, 使用go语言编写,天然支持Windows, MacOS, Linux等主流平台。 提供无需安装的命令行版本, 命令行中启动服务,以html支持UI界面,在浏览器中…

UVM实战笔记(七)

第七章. UVM中的寄存器模型 7.1 寄存器模型简介 7.1.1 带寄存器配置总线的DUT 本章节使用的DUT带寄存器配置,代码如下: module dut(clk,rst_n,bus_cmd_valid,bus_op,bus_addr,bus_wr_data,bus_rd_data,rxd,rx_dv,txd,tx_en)input clk; …

三层交换机报文转发过程

如图所示,假如主机A想访问主机B,首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同…