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

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

内容简介: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. 不可遍历

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

查看所有标签

猜你喜欢:

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

Tango with Django

Tango with Django

David Maxwell、Leif Azzopardi / Leanpub / 2016-11-12 / USD 19.00

Tango with Django is a beginner's guide to web development using the Python programming language and the popular Django web framework. The book is written in a clear and friendly style teaching you th......一起来看看 《Tango with Django》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具