001|JavaScript ES6新特性之Symbol

栏目: JavaScript · 发布时间: 8年前

内容简介:001|JavaScript ES6新特性之Symbol

Symbol

symbol是JavaScript中的一种基础数据类型(primitive types)。而Symbol()是一个函数,用于创建symbol类型的对象。

Symbol([description]) // description参数只是一个便于调试的标记,没有其它任何用处。

Symbol创建symbol类型对象时不可与new共用,直接调用即可:

var symbolObject1 = Symbol() var symbolObject2 = new Symbol() // 此行报异常,Symbol is not a constructor

Symbol()函数 每次调用都会创建一个独一无二的symbol类型对象

var result = (Symbol('David') == Symbol('David')) console.log(result) // 输出false

将symbol对象作为对象属性key的时候,这个属性也是隐藏的(non-enumerable),无法用for...in来遍历。通过一段代码来理解一下:

var symKey = Symbol.for('David')  var student={} student[symKey]='James'  console.log(student[symKey]) for(var item in student){     console.log(student[item]) }

全局符号表

全局符号表(Global Symbol Registry),是一个key-value结构,key是任意对象,value是symbol对象。可以通过Symbol.for、Symbol.keyFor两个函数来操作全局符号表。

Symbol.for(key);

在全局符号表中寻找名字为key的symbol对象,如果找到则返回这个对象;如果没找到,则创建一个新的symbol对象。

说简单一点,对于Symbol.for 只要参数key相同,那么回返的symbol对象就相同 。通过下面的例子来理解一下。

Symbol.for('David') var result = (Symbol.for('David')==Symbol.for('David')) console.log(result) // 输出 true

Symbol.keyFor是Symbol.for的逆操作。

Symbol.keyFor(sym)

sym是一个symbol对象,根据sym返回对应的key。如果不存在,则返回undefined.

var symObj = Symbol.for('David') console.log(Symbol.keyFor(symObj)) // 输出 David

其它Symbol操作

Object.getOwnPropertySymbols()可以返回一个对象中所有的symbol对象key。

Object.getOwnPropertySymbols(obj)

好了,这一节就到这里。Symbol是ES6新特性中的基础内容,希望你都掌握了。

什么是Iterable Protocol & Iterator Protocol?

请继续关注我的课程,我将在后续课程中帮大家依次解答上述问题。

如果你热爱计算机,希望一起切磋交流,欢迎加我为好友!

001|JavaScript ES6新特性之Symbol

我的微信


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Bulletproof Web Design

Bulletproof Web Design

Dan Cederholm / New Riders Press / 28 July, 2005 / $39.99

No matter how visually appealing or packed with content a Web site is, it isn't succeeding if it's not reaching the widest possible audience. Designers who get this guide can be assured their Web site......一起来看看 《Bulletproof Web Design》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试