Symbol讲解
2020-09-14 本文已影响0人
zhang463291046
以下内容是引用或者借鉴别人的,自己只是做个笔记,方便学习。理解错误的地方,欢迎评论。如有侵权,私聊我删除,未经允许,不准作为商业用途
创建唯一的值,没有登记机制
-
Symbol
函数的参数是对当前Symbol
值的key
(也叫描述description
),相同参数的Symbol
函数的返回值是不相等的
// 没有参数的情况
let s1 = Symbol();
let s2 = Symbol();
s1 === s2 // false
// 有参数的情况
let s1 = Symbol('foo');
let s2 = Symbol('foo');
s1 === s2 // false
-
ES2019 提供了一个实例属性
description
,直接返回Symbol
的描述。
const sym = Symbol('foo');
sym.description // "foo"
Symbol.for()
检查给定的key
是否已经存在,存在会用这个值,不存在会新建一个值,有登记机制
let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');
s1 === s2 // true
Symbol.keyFor()
方法返回一个已登记的 Symbol
类型值的key
let s1 = Symbol.for("foo");
Symbol.keyFor(s1) // "foo"
let s2 = Symbol("foo");
Symbol.keyFor(s2) // undefined
静态属性
![](https://img.haomeiwen.com/i6109054/96156e5ab04cc671.png)