0
点赞
收藏
分享

微信扫一扫

Javascript(笔记35) - ES6特性 - Symbol数据类型

Javascript(笔记35) - ES6特性 - Symbol数据类型


Symbol

ES6引入了一种新的原始数据类型 Symbol ,表示独一无二的值。它是 Javascript 语言的第七种数据类型: 

特点:

Symbol 的值是唯一的,用来解决命名冲突的问题;

Symbol 值不能与其他数据进行运算;

Symbol 定义的对象属性不能使用 for ... in 循环遍历,但可以使用 Reflect.ownKeys 来获取对象的所有键名;


创建Symbol

let s1 = Symbol();
let s2 = Symbol();
console.log(s1,s2,typeof(s1)); // Symbol() Symbol() 'symbol'
console.log(s1 === s2); // false
console.log(s1 == s2); // false

Symbol 的唯一性是内部实现的,表面上看都是  Symbol() ,长的一样,但不相等; 

也可以带参数:仅做为说明;

let s1 = Symbol("Jack");        // 简单说明这个 Symbol 是干嘛的;
let s2 = Symbol("Jack");
console.log(s1 === s2); // false

即使有参数说明,也是不相等的,就像都是叫“小明”的人,是两个人;

通过 Symbol.for() 对象方式创建的,就可以相等了;

let s1 = Symbol.for("Jack");
let s2 = Symbol.for("Jack");
console.log(s1,s2,typeof(s1)); // Symbol(Jack) Symbol(Jack) 'symbol'
console.log(s1 === s2); // true

这么些数据类型怎么记呢: USONB: you are so niubility.

U:undefined

S:string、symbol

O:object

N:number、null

B:boolean

特性1:不能运算

let s = Symbol();
let res = s + 100;
let res = s > 100; // 报错:Cannot convert a Symbol value to a number
let res = s + "100"; // 报错:Cannot convert a Symbol value to a string

向对象中添加方法和属性:











举报

相关推荐

0 条评论