学习笔记:ES6之Symbol

来源:互联网 发布:imei校验码算法 编辑:程序博客网 时间:2024/05/19 18:16

Symbol的概念

提供一个独一无二的值,是一种数据类型

//声明

Let a1=Symbol();

Let a2=Symbol();

console.log(a1===a2);--false永不相等

//Symbol.for()与Symbol()一样都是声明一个值,但是Symbol.for(key)会检查之前有没有声明过key,如果声明了则返回声明的值,之前没有声明过,则生成一个独一无二的值

Let a3=Symbol.for('a3');

Let a4=Symbol.for('a3');

console.log(a3===a4);---true

symbol的作用

(1)

let a1=Symbol.for('abc');

let obj={

[a1]:'123',

'abc':345,

'c':456

};

console.log('obj',obj);---obj Object {abc: 345, c: 456,Symbol(abc): "123"}

//利用for of遍历是取不到symbol()声明的值,只能取到对象里面的值

for(let[key,value]of Object.entries(obj)){

console.log('letof',key,value);--let of abc 345 , let of c 456

}

 

//只能得到Symbol()声明的值,使用Object.getOwnPropertySymbols(obj),得到一个数组

Object.getOwnPropertySymbols(obj).forEach(function(item){

console.log(obj[item]);---123

});

//利用Reflect.ownKeys(obj)可以取到obj中所有的值,返回值是一个数组

Reflect.ownKeys(obj).forEach(function(item){

console.log('ownKeys',item,obj[item]);

})

返回值:

ownKeys abc 345

ownKeys c 456

ownKeys Symbol(abc)123

 

原创粉丝点击