let a1:symbol = Symbol('xiaoyueliang')//symbol 英文意思:唯一的
let a2:symbol = Symbol('xiaoyueliang')
//内存地址不一样
console.log(a1 === a2); // false
console.log(a1 == a2); // false
//Symbol Symbol.for 区别
// Symbol : 每个从 Symbol() 返回的 symbol 值都是唯一的
// Symbol.for :返回由给定的 key 找到的 symbol,否则就是返回新创建的 symbol。
console.log(Symbol.for('xiaoyueliang') == Symbol.for('xiaoyueliang'));//true
let obj = {
name:'xiaoyueliang',
[a1]:'taiyang',
[a2]:'9'
}
// console.log(obj);
//{
// name: 'xiaoyueliang',
// [Symbol(xiaoyueliang)]: 'taiyang',
// [Symbol(xiaoyueliang)]: '9'
// }
// for (const key in obj) {
// console.log(key); //name 读取不到symbol的key值
// }
// console.log(Object.keys(obj)); //[ 'name' ]
// console.log(Object.getOwnPropertyNames(obj));//[ 'name' ]
// console.log(Object.getOwnPropertySymbols(obj)); //[ Symbol(xiaoyueliang), Symbol(xiaoyueliang) ]//拿不到除symbol的key值
//es6新增映射
console.log(Reflect.ownKeys(obj)); //[ 'name', Symbol(xiaoyueliang), Symbol(xiaoyueliang) ]
Symbol Symbol.for 区别 Reflect.ownKeys
最新推荐文章于 2024-06-12 11:59:04 发布