类的声明基本的类声明类声明以 class 关键字开始,其后是类的名称。剩余部分的语法看起来就像对象字面量中的方法简写,并且在方法之间不需要使用逗号。作为范例,此处有个简单的类声明: 类语法中,必须使用对象方法简写的形式来定义构造器、原型方法、访问器属性和静态方法等。不允许使 ...
迭代器与生成器
许多编程语言都将迭代数据的方式从使用 for 循环转变到使用迭代器对象,for 循环需要初始化变量以便追踪集合内的位置,而迭代器则以编程方式返回集合中的下一个项。迭代器使操作集合变得更简单,JS 语言的很多新成分中都有迭代器的身影,如 for-of 和扩展运算符。 何为迭代器?迭代器是被设计专用于迭 ...
Set 与 Map
Set 是不包含重复值的列表。你一般不会像对待数组那样来访问 Set 中的某个项。相反更常见的是,只在 Set 中检查某个值是否存在。 Map 则是键与相对应的值的集合。因此,Map 中的每个项都存储了两块数据,通过指定所需读取的键即可检索对应的值。Map 常被用作缓存,存储数据以便此后快速检索。 ...
符号与符号属性
在 JS 已有的基本类型之外,ES6 引入了一种新的基本类型:符号(Symbol)。符号起初被设计用于创建对象私有成员,而这也是JS开发者期待已久的特性。 创建符号值符号没有字面量形式,这在JS的基本类型中是独一无二的。你可以使用全局 Symbol 函数来创建一个符号值,正如下面这个例子: let ...
解构
对象解构在对象解构语法出现之前,如果你想将一个对象的多个属性值分别赋值给本地的多个变量,需要书写许多相似的代码。 let obj = { a: 1, b: 2, c: 3}let a = obj.alet b = obj.blet c = obj.c// 1console. ...
函数
带参数默认值的函数ES6 中的参数默认值ES6 能更容易地为参数提供默认值,它使用了初始化形式,以便在参数未被正式传递进来时使用。在函数声明中能指定任意一个参数的默认值,即使该参数排在未指定默认值的参数之前也是可以的。 只有在某个参数未传递,或明确传递 undefined 时,才会应用参数的默认值。 ...
块级绑定
块级声明块指由花括号封闭的代码块。 块级声明包括 let 和 const 两种声明方式,首先介绍它们之间的共性特点: 块级作用域:块级声明的变量,无法在指定的块作用域外访问;禁止重复声明:如果一个标识符已经在代码块内部被定义,那么禁止在此代码块内部对同一个标识符进行块级声明 ...
this
关于 this当一个函数被调用时,会创建一个活动记录(执行上下文、执行环境、context)。这个活动记录会包含函数在哪里被调用、函数的调用方法、传入的参数等信息。this 就是活动记录中的一个属性,会在函数执行的过程中用到。 this 是在运行时绑定的,它的绑定取决于函数调用时的各种方式。this ...
函数&作用域&闭包
函数的定义定义函数的两种常用方式为函数声明和函数表达式,他们有如下区别: 函数声明 函数函数表达式 会被提升 不会被提升 名称标识符会存在于所在的作用域中 名称标识符只能在这个函数的内部被访问,外部作用域则不行 作用域是什么引擎、编译器、作用域 引 ...
对象&原型&继承
理解对象属性类型数据属性数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有 4 个描述其行为的特性。 configurable:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。直接在对象上定义的属性 ...