微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

 

  

  

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐