symbol 的引入是为了解决对象中的属性名冲突的问题

使用symbol() 函数生成的变量值不与任何的变量值相等,  所有用改变量的值做属性名是不会冲突的

symbol 可以转化为字符串, 可以转化为 boolean. 其余的运算不能参与

在对象中使用 symbol 必须使用方括号, 不能使用点, 引用也是如此

看来 symbol  只是生成一个不相等值的函数,

symbol 不能被普通的方法遍历

Reflect.ownKeys 可以获取到对象中的 symbol 的属性

Object.getOwnPropertyNames(obj)  可以获取 symbol

symbol的不能被普通的方法遍历可以利用做私有属性名

Symbol.for

可以看成 一个缓存堆, 如果这个堆中存在一个值, 就直接拿出来使用, 否则就是创建一个返回,  注意其值的获取方式是其描述是否是一致的

Symbol.keys

返回一个symbol 变量的描述, 只能是已经登记的(使用 symbol.for的)

语言内置的函数, 只是由字符串变为了 symbol的方式来引用,为的是不被冲突, 例如数组的某一个方法名 . 例如 Array[Symbol.hasinstance]

总结

  没发现 symbol 有什么必需的, 其作用就是生出一个不可能相同的值.

  感觉真是饶了一个弯子, symbol 可以保证一个对象中的不被冲突, 但是变量名怎么保证不冲突??

最新文章

  1. 基本组件的使用——UITabBarController
  2. maven清除不同版本的重复依赖
  3. 基于jPlayer的三分屏制作
  4. 【NOI2016】区间 题解
  5. Web基础开发最核心要解决的问题
  6. memcache 永久数据被踢
  7. POJ 3258 River Hopscotch (binarysearch)
  8. poj 1811 Prim test
  9. MySQL被Oracle并购后的409个日日夜夜
  10. Jmeter实现WebSocket协议的接口和性能测试方法
  11. class 类(2)
  12. UIImageView圆角,自适应图片宽高比例,图片拉伸,缩放比例和图片缩微图
  13. 如何掌握并提高linux运维技能
  14. Shell脚本数据备份
  15. js判断文件类型大小并给出提示
  16. Python 上下文管理器和else块
  17. javascript 删除 url 中指定参数,并返回 url
  18. vue—data中变量和字符串拼接
  19. C# 监听HTTP请求
  20. Jenkins解决无法获取插件的办法(升级站点目录)

热门文章

  1. mysql 迁移
  2. formData 对象 与 Content-Type 类型
  3. 【easy】27. Remove Element
  4. SpringBoot之hello world!
  5. 大数据技术 - MapReduce 应用的配置和单元测试
  6. 网页布局之grid
  7. python3类方法与静态方法
  8. Ubuntu安装VLC播放器
  9. XVII Open Cup named after E.V. Pankratiev. GP of Tatarstan
  10. org.hibernate.exception.SQLGrammarException: could not extract ResultSet &&&&&Incorrect syntax near '@P0'.