随笔分类 - ES6
es6语法特性,新增的方法理解与使用
摘要:Map 含义和基本用法 JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 上面代码原意是将一个 DOM 节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串[o
阅读全文
摘要:Set 基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 上面代码通过add()方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。 Set函数可以接受一个数组(或者具有 it
阅读全文
摘要:概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Sym
阅读全文
摘要:Object.fromEntries() Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。 该方法的主要目的,是将键值对的数据结构还原为对象,因此特别适合将 Map 结构转为对象。 该方法的一个用处是配合URLSearchPara
阅读全文
摘要:Object.keys(),Object.values(),Object.entries() Object.keys() ES5 引入了Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 ES2017 引入了跟Object.ke
阅读全文
摘要:Object.getOwnPropertyDescriptors() ES5 的Object.getOwnPropertyDescriptor()方法会返回某个对象属性的描述对象(descriptor)。ES2017 引入了Object.getOwnPropertyDescriptors()方法,返
阅读全文
摘要:Object.assign() 基本用法 Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。 Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。 注意,如果目标对象与源对象有同名属性,或多个源对象有同名属
阅读全文
摘要:Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符( )。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same
阅读全文
摘要:对象的扩展运算符 扩展运算符(...)。ES2018 将这个运算符引入了对象。 解构赋值 对象的解构赋值用于从一个对象取值,相当于将目标对象自身的所有可遍历的(enumerable)、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。 上面代码中,变量z是解构赋值所
阅读全文
摘要:super 关键字 我们知道,this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象。 上面代码中,对象obj.find()方法之中,通过super.foo引用了原型对象proto的foo属性。 注意,super关键字表示原型对象时,只能用在对
阅读全文
摘要:属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 除了属性简写,方法也可以简写。 下面是一个实际的例子。 这种写法用于函数的返回值,将会非常方便
阅读全文
摘要:数组实例的 find() 和 findIndex() 数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。 上面代码找出数组中第一个小
阅读全文
摘要:数组实例的 copyWithin() 数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。 它接受三个参数。 target(必需):从该位置开始替换数据。如果为负值,表示倒数。 start(可
阅读全文
摘要:Array.of() Array.of方法用于将一组值,转换为数组。 这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。 上面代码中,Array方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于 2 个时,Arr
阅读全文
摘要:Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。 下面是一个类似数组的对象,Array.from将它转为真正的数组。 实际应用中
阅读全文
摘要:扩展运算符 含义 扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。 该运算符主要用于函数调用。 上面代码中,array.push(...items)和add(...numbers)这两行,都是函数的调用,它们的都使用了扩展运算符,该运
阅读全文
摘要:函数参数的默认值 基本用法 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World。这种写法的缺点在于,如果参数y赋值了,但是对应的布尔值为false,则该赋值不起作用。就像上面代码的最后一行,参数y等于空字符
阅读全文
摘要:二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示。 如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。 Num
阅读全文
摘要:ES6 加强了对 Unicode 的支持,并且扩展了字符串对象。 字符的 Unicode 表示法 JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。 但是,这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两
阅读全文
摘要:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 以前,为变量赋值,只能直接指定值。 ES6 允许写成下面这样。 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些
阅读全文