ES6 Symbol

Symbol 使用api

var symbol = Symbol("abc");
console.log(typeof symbol); //symbol
console.log(Array.isArray(symbol)); //false
console.log(Object.prototype.toString.call(symbol)); //[object Symbol]
console.log(symbol.description); //提取Symbol的描述 打印abc

Symbol.for() 在全局中声明 会在内存中开辟1个空间,使用 KeyFor获取 无论声明多少次 内存中只定义了1个Symbol

let bol = Symbol.for("tft"); 
//var symbol = Symbol("abc");这种写法声明了3个Symbol 如果声明多个等于重复创建了多个Symbol
console.log(Symbol.keyFor(symbol)); //undefined
console.log(Symbol.keyFor(bol));

场景: 使用Symbol定义对象的唯一属性名(键) eg:在调用接口时防止密码泄露

//写法1
   var sym = Symbol();
   var person = {};
   person[sym] = "name";
   console.log(person);
//写法2
var na = Symbol();
      const normal = {
        age: 20,
        [na]: "lougou",
      };
      console.log(normal[na]);
      //Object.keys不能获取到symbol类型
      console.log(Object.keys(normal));

综合写法

const zoom = {
        name: "张三",
        agge: 20,
        sex: "男",
        [Symbol("艾瑞莉娅")]: "昂扬不灭",
        key: Symbol("123"),
      };
      console.log(zoom);
      console.log(JSON.stringify(zoom)); //{"name":"张三","agge":20,"sex":"男"}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值