es6之symbol数据类型

1、六大数据类型

  String字符串类型、Number数字类型、Object对象类型、Boolean布尔值类型、Null空值、Undefined 未定义

symbol出现原因:

  解决对象的属性名冲突

使用: 

1     // 定义一个symbol类型的变量
2     let symbol = Symbol();
3     console.log(symbol);
4     console.log(typeof symbol);  //symbol 类型

特点:任何一个Symbol定义的都是独一无二的。

2、API

  1、获取Symbol定义的属性  Object.getOwnPropertySymbol()

1  console.log(Object.getOwnPropertySymbols(Person)); //[Symbol(name)]

  2、获取全部属性 Reflect.ownKeys() ;

  3、Symbol.for()创建的时候会把Symbol的值放到全局环境中,供以后的Symbol使用。

  4、Symbol.keyFor() 搜索全局中是否有Symbol.for定义的变量  有的话拿过来用,没有重新定义

  

 1 <script>
 2     let name = Symbol('咱这是名字的描述');
 3     let Person = {
 4         name: '名字普通',
 5         [name]: '名字Symbol定义',
 6     }
 7 
 8     // 获取全部的属性
 9     console.log(Reflect.ownKeys(Person));  // ["name", Symbol(咱这是名字的描述)]
10     // Symbol.for();   在创建的时候会把symbol的值登记在全局环境中,供以后Symbol.for()来搜索
11     let name1 = Symbol.for('name');
12     let name2 = Symbol.for('name');
13     console.log(name1 === name2);   //true
14 
15     // Symbol.keyFor(); 搜索全局中是否有Symbol.for定义的变量,如果有返回  如果没有返回undefined
16     console.log(Symbol.keyFor(name1));   //name
17 
18     console.log(Symbol.keyFor(name));  //undefined
19 
20 </script>

  

  

原文地址:https://www.cnblogs.com/qianqiang0703/p/13612383.html