03-symbol

symbol学习

基础

  • symbol是ES6新增的一种基本数据类型
  • symbol表示一个独一无二的值,它和任何值都不相等。测试如下:



    在这里插入图片描述

symbol作为属性名

  • symbol作为对象的属性名是唯一的不会被覆盖
    在这里插入图片描述

  • symbol作为对象的属性名也无法正常被获取到
    在这里插入图片描述

  • symbol也不是完全无法获取到的,可以用一下两种办法获取

    1、使用Object.getOwnPropertySymbols()方法或对象中的symbol属性
    在这里插入图片描述
    2、使用Reflect.ownKeys()方法获取对象中包含symbol的所有属性名
    在这里插入图片描述

Symbol.for()Symbol.keyFor()

Symbol.for()

  • 使用Symbol.for()创建一个变量,它会现在全局查询是否有用同样方法创建的的同一symbol,若有就直接拿过来,没有就新创建一个
    在这里插入图片描述

Symbol.keyFor()

  • 使用Symbol.keyFor()传入使用Symbol.for()创建的symbol,返回创建时传入的标识,若传入其他的则返回undefined
    在这里插入图片描述

Symbol的内置方法(部分)

  • Symbol.hasInstance:自定义instanceof操作符在某个类上的行为
    在这里插入图片描述

  • Symbol.isConcatSpreadable:用于配置某对象作为Array.prototype.concat()方法的参数时是否展开其数组元素
    在这里插入图片描述

  • Symbol.species:允许子类覆盖对象的默认构造函数
    在这里插入图片描述


版权声明:本文为weixin_42414990原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。