ES6新特征总结与介绍——内置对象

栏目: JavaScript · 发布时间: 4年前

内容简介:ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol。Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key。

ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

(一)Symbol

a = Symbol('sss')
b = Symbol('sss')
a === b     //false
复制代码

1. 作为属性名

  • 由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。
  • Symbol 作为对象属性名时不能用.运算符,要用[]。因为.运算符后面是字符串。
  • Symbol 值作为属性名时,该属性是公有属性不是私有属性,可以在类的外部访问。但是不会出现在 for...in 、 for...of 的循环中,也不会被 Object.keys() 、 Object.getOwnPropertyNames() 返回。如果要读取到一个对象的 Symbol 属性,可以通过 Object.getOwnPropertySymbols() 和 Reflect.ownKeys() 取到。

2. 定义常量

3. Symbol.for()

返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol。

4. Symbol.keyFor()

Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key。

let sym = Symbol.for("foo")
Symbol.keyFor(sym)  // "foo"
复制代码

(二)Map 与 Set

ES6 引入了四种新的原始数据结构。

1. Set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

  1. Set 结构的实例有以下属性:
  • Set.prototype.size:返回Set实例的成员总数。
  1. 四个操作方法:
  • add(value):添加某个值,返回 Set 结构本身。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除所有成员,没有返回值。
  1. 遍历操作:
  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数遍历每个成员

2. WeakSet

首先,WeakSet 的成员只能是对象,而不能是其他类型的值。

其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存。(WeakMap同)

  1. 没有Size属性
  2. 操作方法:
  • WeakSet.prototype.add(value):向 WeakSet 实例添加一个新成员。
  • WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。
  • WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在。
  1. 不可遍历

3. Map

它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

  1. Map 结构的实例有以下属性:
  • size 属性:返回 Map 结构的成员总数。
  1. Map 结构的实例有以下操作方法:
  • set(key, value):set方法设置键名key对应的键值为value,然后返回整个 Map 结构。
  • get(key):get方法读取key对应的键值,如果找不到key,返回undefined。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
  • clear():清除所有成员,没有返回值。
  1. 遍历操作:
  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回所有成员的遍历器。
  • forEach():遍历 Map 的所有成员。

4. WeakMap

首先,WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。

其次,WeakMap的键名所指向的对象,不计入垃圾回收机制。

  1. 没有Size属性
  2. WeakMap 结构的实例有以下操作方法:
  • get(key)
  • set(key, value)
  • has(value)
  • delete(value)
  1. 不可遍历

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Big C++中文版

Big C++中文版

霍斯特曼 / 姚爱红 / 电子工业 / 2007-3 / 85.00元

本书是一本关于C++的优秀教材,南圣何塞州立大学知名教授Horstmann编写。全书深入探讨了C++的知识,并着重强调了安全的标准模板库;本书较厚,但它可用做程序设计专业学生的教材(两学期)。全书在介绍基础知识后,作者论及了一些高级主题。书中面向对象的设计一章探讨了软件开发生命周期问题,给出了实现类关联的实用提示。其他高级主题包括模板,C++标准模板库,设计模式,GUI,关系数据库以及XML等。本......一起来看看 《Big C++中文版》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具