js重难点:Symbol类型的特点

1. Symbol值得唯一性
• 通过typeof运算符得到的结果是“symbol”。
• 任何通过Symbol()函数创建的Symbol值都是不相同的,即使传递了相同的字符串。

2. 不能使用new操作符。Symbol函数并不是一个构造函数,因此不能通过new操作符创建Symbol值。

3. 不能参与类型运算。Symbol值可以通过toString()函数显示地转换为字符串,但是本身不能参与其他类型值的运算,例如在对Symbol值进行字符串拼接操作时,会抛出异常。

4.可以使用同一个Symbol值。
• 使用Symbol.for()函数,它接收一个字符串作为参数,然后搜索有没有以该参数作为名称的Symbol值。如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值。
• Symbol.for()函数不会每次调用就返回一个新的Symbol类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。

【Symbol类型的常见用法】
1. 用作对象属性名。不能通过点运算符为对象添加Symbol属性。
2. 用于区分属性。
3. 用于属性名遍历。
• 使用Symbol作为属性名时,不能通过Object.keys()函数或者for...in来枚举,这样我们可以将一些不需要对外操作和访问的属性通过Symbol来定义。
• 因为Symbol属性不会出现在属性遍历的过程中,所以在使用JSON.stringify()函数将对象转换为JSON字符串时,Symbol值也不会出现在结果中。
展开
独立开发者张张于2022-06-29 18:55发布的图片
评论