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。它类似于数组,但是成员的值都是唯一的,没有重复的值。
- Set 结构的实例有以下属性:
- Set.prototype.size:返回Set实例的成员总数。
- 四个操作方法:
- add(value):添加某个值,返回 Set 结构本身。
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- has(value):返回一个布尔值,表示该值是否为Set的成员。
- clear():清除所有成员,没有返回值。
- 遍历操作:
- keys():返回键名的遍历器
- values():返回键值的遍历器
- entries():返回键值对的遍历器
- forEach():使用回调函数遍历每个成员
2. WeakSet
首先,WeakSet 的成员只能是对象,而不能是其他类型的值。
其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存。(WeakMap同)
- 没有Size属性
- 操作方法:
- WeakSet.prototype.add(value):向 WeakSet 实例添加一个新成员。
- WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。
- WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在。
- 不可遍历
3. Map
它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
- Map 结构的实例有以下属性:
- size 属性:返回 Map 结构的成员总数。
- Map 结构的实例有以下操作方法:
- set(key, value):set方法设置键名key对应的键值为value,然后返回整个 Map 结构。
- get(key):get方法读取key对应的键值,如果找不到key,返回undefined。
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- has(value):has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
- clear():清除所有成员,没有返回值。
- 遍历操作:
- keys():返回键名的遍历器。
- values():返回键值的遍历器。
- entries():返回所有成员的遍历器。
- forEach():遍历 Map 的所有成员。
4. WeakMap
首先,WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。
其次,WeakMap的键名所指向的对象,不计入垃圾回收机制。
- 没有Size属性
- WeakMap 结构的实例有以下操作方法:
- get(key)
- set(key, value)
- has(value)
- delete(value)
- 不可遍历
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 特征工程:特征获取、特征规范和特征存储
- 特征工程之特征缩放 & 特征编码
- 特征工程:特征设计、特征可用性评估
- [译] 为什么要做特征缩放,怎么做特征缩放,什么时候做特征缩放?特征缩放三连了解一下
- 特征金字塔特征用于目标检测
- 数据挖掘篇——特征工程之特征降维
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!