对象字面量简化与增强

在 JavaScript 中,使用底下的方式创建对象字面量应该是屡见不鲜了: var x; var y; // 经过一些计算得到 x、y 的值... var o = { x : x, .........

符号

在 ECMAScript 6 中,基本数据类型除了 number、string 与布尔值 boolean,还多了一个 symbol。 在过去,若需要表示一个独立无二的符号(名称),会使用字符串来临时权充.........

增强的数值与字符串

JavaScript 中的基本数据类型包括了数值、字符串与布尔值,类型名称分别为 number、string 与布尔值 boolean,在 ES6 中,多了个 symbol,这会在下一篇文件中说明。 至.........

使用 let 与 const 定义变量

在 ECMAScript 6 中,定义变量的话建议使用 let,这可以让变量在行为上看起来,比较像是其他程序语言中的变量该有的行为。例如,终于有区块范围了: > if(true) { ... .........

轻量数据格式 JSON

JSON 全名 JavaScript Object Notation,为 JavaScript 对象字面量(Object literal)的子集,你可以在〈Introducing JSON 〉找到详细的.........

命名空间管理

ECMAScript 6 才有规范模块语法,在这之前,JavaScript 本身没有命名空间管理的机制,名称都是对象上的特性,要不就是全局对象上的特性(全局变量),要不就是 context 对象上的变.........

模拟类的封装与继承

在 ECMAScript 6 出现之前,JavaScript 在语法层面上,是个基于原型(Prototype-based)的语言,不少来自基于类(Class-based)语言的开发者,会因为不习惯或.........

检验对象

因为 JavaScript 是动态语言,通常很少直接确认对象的类型,对于对象的操作,仅要求是否具备所需特性,而不在意所谓的类型,对象的特性侦测绝大多数情况下就足够了。例如: if(obj.somePr.........

函数 prototype 特性

在〈隐藏诸多细节的构造函数〉中看过一个例子: function toString() { return [ + this.name + , + this.age + ]; } fu.........

隐藏诸多细节的构造函数

如果你有以下创建对象的需求: function toString() { return [ + this.name + , + this.age + ]; } var p1 = .........

在 Scope chain 查找变量

在〈使用 var 定义变量 〉中谈过变量范围,当时说过,使用 var 定义的变量,作用范围基本上是在函数的范围之中,若是在全局范围,会是全局对象上的一个特性,也就是俗称的全局范围。 在〈Closure.........

Closure 与一级函数

Closure 是拥有闲置变量(Free variable)的表达式。闲置变量真正扮演的角色依当时环境而定。支持 Closure 的程序语言通常具有一级函数(First-class function).........