ES6 中的 Symbol
Symbol 代表独一无二的值,即使传入的参数相同,返回的数值也是不同的,比如:
let symOne = Symbol('test') let symTwo = Symbol('test') console.log(symOne === synTwo) // false
如果将 Symbol 值作为一个对象的属性,那么有些对象的方法是无法获取该属性的。例:
let prop = Symbol('propOne') let obj = { [prop]: '秘密', name: '张三', age: 18 } console.log(Object.keys(obj)) // ["name", "age"] console.log(Object.getOwnPropertyNames(obj)) // ["name", "age"] console.log(JSON.stringify(obj)) // '{"name": "张三", "age": 18}' console.log(Object.getOwnPropertySymbols(obj)) // [Symbol('propOne')] console.log(Reflect.ownKeys(obj)) // [Symbol(name), "name", "age"]
Symbol 上的两个方法 Symbol.for()
与 Symbol.keyFor()
for(params)
方法会全局地搜索传入的 params,如果发现已经使用 params 创建过 Symbol 变量,那么这个函数会返回创建过的 Symbol 变量值,否则的话在全局注册一个 Symbol 值。forKey()
传入 Symbol.for()
返回的变量,返回 for()
中传入的参数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: ES6 中的 Proxy
下一篇: 不要相信一个熬夜的人说的每一句话
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论