javascript中的symbol、可枚举、不可枚举概念

本文介绍了JavaScript中的Symbol数据类型,它是ES6新增的。Symbol值是唯一的,常用于创建对象的私有属性。文中详细讲解了Symbol的创建、用途,包括全局共享的Symbol和如何在对象中查找Symbol属性。
摘要由CSDN通过智能技术生成

javascript中基本数据类型有七种:Number、Bigint、String、undefined、null、Boolean、Symbol

 

Symbol,这个东西是2016年ES6标准里添加的

看看例子:

let k1 = Symbol();
let k2 = Symbol();
let k3 = Symbol(1);
let k4 = Symbol(1.0);
let k5 = Symbol("1");
let k6 = Symbol("kkk");
let k7 = 12;
let k8 = "12";


let kvs = {
    [k1]: "v1-k1",
    [k2]: "v2-k2",
    [k3]: "v3-k3",
    [k4]: "v4-k4",
    [k5]: "v5-k5",
    [k6]: "v6-k6",
    [k7]: "v7-k7",
    [k8]: "v8-k8"
};

for (let k in kvs) {
    console.log("k = ", k, ", v = ", kvs[k]); //k =  12 , v =  v8-k8,#其它用symbol做键的都隐藏无法访问(不可枚举)
}

console.log("js = ", JSON.stringify(kvs)); //js =  {"12":"v8-k8"}   #symbol都是不可枚举的 
console.log("k1 == k2,", k1 == k2, ", k1 = ", k1, ", k2 = ", k2); //k1 == k2, false , k1 =  Symbol() , k2 =  Symbol()  #每个Symbol值都是唯一的

let arr = [k1, k2, k3, k4, k5, k6];
for (let i in arr) {
    console.log("a i = ", i, ", v = ", arr[i], ", kvs=", kvs[arr[i]]); //symbol是不可枚举,需要直接使用kvs[symbol]才能取到值
}

let syms = Object.getOwnPropertySymbols(kvs); //只获得所有的symbol属性
for (let i in syms) {
    console.log("getSymbols i = ", i, ", symbolKey = ", syms[i], ", v = ", kvs[syms[i]]);
    // console.log("getSymbols k = ", k, ", v = ", kvs[k]);
}


console.log("typefof k1 = ", typeof(k1), ", k1 = ", k1, "typeof k1=", typeo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值