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版权协议,转载请附上原文出处链接和本声明。