es6 symbol的出现是针对什么场景?怎么回事哈啊?

假如我有个对象放在工具(util.js)里面
letsymbol=Symbol('whatever');
exportletobj={
[symbol](){
console.log('log');
},
say(){
console.log('say');
}
}
我想要在组件里面使用这个方法,比如使用say(),我可以直接importobj,然后obj.say()。如果我想要使用[symbol]的这个方法,岂不是还要将symbolexport,然后importsymbol和obj,再去执行obj[symbol]()。这样岂不是更复杂了?
慕神8447489
浏览 373回答 2
2回答

胡说叔叔

一个不重复的值node中有一个比较实际的场景,require('util').promisify.custom就是一个Symbol。用于设置自定义的promisify函数,不会担心这个属性被其他人误操作而覆盖。我们也可以通过这个key来取出对应的函数。

DIEA

Object.getOwnPropertySymbols()方法返回一个给定对象自身的所有Symbol属性的数组。let_symbol=Object.getOwnPropertySymbols(obj);obj[_symbol[0]]()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript