//Symbol的初衷:解决对象的属性名冲突
// 1、声明Symbol
var num = 10
var sm1 = Symbol()
console.log(sm1);
console.log(typeof sm1);
var sm2 = Symbol()
console.log(sm2);
console.log(sm1 == sm2);
var sm3 = Symbol('123')
console.log(sm3);
// 2、Symbol是独一无二的
var a =Symbol('a111')
var b = Symbol('b')
// 3、
var obj= {
a:'a',
b:'b',
[a]:'c',
[b]:'d'
}
console.log(obj);
console.log(obj[a]);
for(let x in obj){
console.log(x);
}
// 4、Object.getOwnPropertySymbols 函数 获取对象中Symbol属性名
console.log(Object.getOwnPropertySymbols);
var arr =Object.getOwnPropertySymbols(obj)
console.log(obj[arr[0]]);
// 5、Reflect.ownkeys函数 获取所有的属性
console.log(Reflect.ownKeys(obj));
var arr1 = Reflect.ownKeys(obj)
console.log(...arr1);
// 6、Object.keys() Object.values() 获取对象中除了Symbol的属性
console.log(Object.keys(obj));
console.log(Object.values(obj));
// 7、Symbol.for函数 函数的作用:根据参数名,去全局环境中搜索是否有以该symbol.for()参数为名的symbol值
// 有就返回他,没有就以该参数名来创建一个新的symbol值
var smb = Symbol('smb')
console.log(smb);
// console.log(Symbol.for('smb'));
// console.log(Symbol.for('smb1'));
var smb1 =Symbol.for('smb')
console.log(smb1);
var smb2 = Symbol.for('smb')
console.log(smb2);
console.log(smb == smb1);
console.log(smb1 == smb2);
【symbol数据类型】
最新推荐文章于 2024-11-07 13:38:59 发布