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

        在 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 ----- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值