ES6系列之Symbol
# 一、简介
ES6新加入了一种原始数据类型Symbol,表示独一无二的值,这是js的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)
- 对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的
Symbol类型。凡是属性名属于Symbol类型,就都是独一无二的,可以保证不会与其他属性名产生冲突
# 1.1 定义
Symbol([description])
@前端进阶之旅: 代码已经复制到剪贴板
参数
description是一个可选参数,是一个字符串,可以用于调试,但不能访问Symbol自身
var sym1 = Symbol();
var sym2 = Symbol('foo');
var sym3 = Symbol('foo');
@前端进阶之旅: 代码已经复制到剪贴板
# 1.2 值唯一性
每一个
Symbol()返回的值都是唯一的。一个Symbol值能作为对象属性的标识符,这是改数据类型仅有的目的
Symbol("yuan") === Symbol("yuan"); // false
@前端进阶之旅: 代码已经复制到剪贴板
# 1.3 不可以使用 new 操作符
var sym = new Symbol(); // TypeError报错
@前端进阶之旅: 代码已经复制到剪贴板
# 1.4 结合 Object() 函数
结合
Object()函数,创建一个Symbol包装器对象
var sym = Symbol();
typeof sym; // "symbol“”
var symobj = Object(sym);
typeof symobj; // "object"