JS:symbol有什么作用(*****五颗星)

symbol:

symbol是一个ES6标准种新增的一种基本数据类型,在JavaScript中,共有七种基本数据类型:string、number、bigint、boolean、null、undefined、symbol。并且除了null和undefined之外,每个基本类型都有其包装对象。

Symbol() 函数会返回 symbol 类型的值。

如果你真的想创建一个 Symbol 包装器对象 (Symbol wrapper object),你可以使用 Object() 函数:

全局共享的 Symbol

上面使用 Symbol() 函数的语法,不会在你的整个代码库中创建一个可用的全局的 symbol 类型。要创建跨文件可用的 symbol,甚至跨域(每个都有它自己的全局作用域),使用 Symbol.for() 方法和 Symbol.keyFor() 方法从全局的 symbol 注册表设置和取得 symbol。

在对象中查找 Symbol 属性

Object.getOwnPropertySymbols() 方法让你在查找一个给定对象的符号属性时返回一个 symbol 类型的数组。注意,每个初始化的对象都是没有自己的 symbol 属性的,因此这个数组可能为空,除非你已经在对象上设置了 symbol 属性。

如果你用Symbol.for()创建带有相同 description的两个 symbol,那它们就是相等的。

<script>
    const symbol1 = Symbol.for('helloworld');
    const symbol2 = Symbol.for('helloworld');
    console.log(symbol1 === symbol2); // true
    console.log(symbol1); // 'Symbol(helloworld)'
  </script>

作用:

  • 表示独一无二的变量,防止命名冲突
    • symbol可以去模拟私有变量,由于任何两个symbol都是不相等的,在 JavaScript 里可以用来模拟私有属性。

    symbol不会出现在 Object.keys()的结果中,因此除非你明确地export 一个symbol,或者用 Object.getOwnPropertySymbols()函数获取,否则其他代码无法访问这个属性。

      • 一个 symbol 值能作为对象属性的标识符(属性名);这是该数据类型仅有的目的,只有 字符串 和 symbol 类型才能用作对象属性名。

注意:

  • typeof运算符能识别 symbol 类型
  • Symbols 在 for...in 迭代中不可枚举。

Object.getOwnPropertyNames() 不会返回 symbol 对象的属性,但能使用 Object.getOwnPropertySymbols() 得到。

Object.getOwnPropertySymbols() 方法让你在查找一个给定对象的符号属性时返回一个 symbol 类型的数组。。

  • 当使用 JSON.stringify() 时,以 symbol 值作为键的属性会被完全忽略:
  • 当一个 Symbol 包装器对象作为一个属性的键时,这个对象将被强制转换为它包装过的 symbol 值:
  • Symbol作为构造函数来说它并不完整,因为它不支持语法:"new Symbol()"
  • 每个从 Symbol() 返回的 symbol 值都是唯一的。所以没有

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

前端面试题 文章被收录于专栏

前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理

全部评论
楼主是不是已经工作很多年了?
点赞 回复 分享
发布于 2023-03-22 22:51 广东
学到了,感谢楼主分享啊,分享的挺细致的
点赞 回复 分享
发布于 2023-03-23 09:12 湖北

相关推荐

01-02 00:50
三峡大学 Java
程序员牛肉:这简历一出手就离失业不远了。 作为一家公司来讲,我如果要招日常实习生,那我对实习生最基本的要求就是要能干活,毕竟你就待三四个月,谁会留心培养你? 那么除了院校之外,最重要的就是项目和实习了。没有实习的话项目就好好搞。 但是你说你这个项目吧:课程作业管理系统和TMS运输管理系统。这两个基本就和闹着玩差不多。 你作为一个想要应聘Java开发实习生的人,对后端的理解还仅仅停留在:“使用mapper和sql映射”,“使用SQL进行多表调用”,“基于MySQL简历表结构”,“基于Spring boot完成CURD操作”这种玩具上......... 找不到后端实习的
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客企业服务