console.log(Symbol() === Symbol()); // false console.log(Symbol('key') === Symbol('key')); // false 1. 2. 3. 4. 5. 6. 7. 1.2 Symbol.for() 和 Symbol.keyFor() // 使用 Symbol.for() 创建共享的 Symbol const s1 = Symbol.
综上所述,Symbol在ES6中提供了强大的功能,尤其是在需要唯一标识符和模拟私有属性的场景中。通过合理使用Symbol,可以显著提升代码的安全性和可维护性。
例如,可以使用Symbol.iterator创建一个自定义迭代器,通过遍历符号属性来处理对象的迭代。 除了以上示例,Symbol还可以与其他JavaScript特性如迭代器、生成器、反射等一起使用,提供更强大的编程能力。 三. Symbol的使用场景 Symbol的使用场景有很多,尤其用于创建独一无二键的基本数据类型,解决属性名冲突时使用。下面列举几...
在Es6 中引入了一个新的基础数据类型:Symbol,对于其他基本数据类型(数字number,布尔boolean,null,undefined,字符串string)想必都比较熟悉,但是这个Symbol平时用得很少,甚至在实际开发中觉得没有什么卵用,能够涉及到的应用场景屈指可数. 往往在面试的时候,屡面不爽.下面一起来看看的这个数据类型的 具体解决的问题 在Es5...
1)使用Object.getOwnPropertySymbols(obj) 。这种方式只拿到了symbol的变量的值 Object.getOwnPropertySymbols(obj).forEach(function(item){ console.log(obj[item]) }) 结果为 123 2)使用Reflect.ownKeys(obj) Reflect.ownKeys(obj).forEach(function(item){ ...
场景一:使用Symbol值作为对象属性名 1let obj ={2num:123,3text:"Str"4}5console.log( obj["num"] );//1236console.log( obj["text"] );//Str78const osNum = Symbol("num");9const osText = Symbol("text");10let obS ={11[osNum]:123,12[osText]:"Str"13}14console.log( obS[osNum...
一个不重复的值node中有一个比较实际的场景,require('util').promisify.custom就是一个Symbol。用于...
Symbol的使用场景只要有: 1: 所有使用可计算属性名的地方 2: Object.defineProperty() 3: Object.defineProperties() 下面来看一个综合了以上三种使用场景的代码示例: let firstName = Symbol('first name'); let person = { [firstName]: 'mike' //用在对象的可计算属性 ...
#,symbol 用来模拟私有字段的场景也没了,在 V8 内部私有字段就是用 private symbol 来实现的,可以...