JS-Symbol数据类型解释

在JavaScript中,Symbol是一种原始数据类型,用于创建唯一且不可变的值。

Symbol值是独一无二的,即使创建时使用相同的描述,每次创建的Symbol值也是不同的。这使得Symbol非常适合用作对象属性的标识符,可以防止属性名冲突。

以下是几个symbol数据类型的应用场景:

  1. 创建唯一的对象属性键:
const NAME = Symbol('name');
const obj = {};

obj[NAME] = 'John';

console.log(obj[NAME]); // 输出: John

  1. Symbol用作对象的私有成员:
const _name = Symbol('name');
const _age = Symbol('age');

class Person {
  constructor(name, age) {
    this[_name] = name;
    this[_age] = age;
  }

  getInfo() {
    return `${this[_name]} is ${this[_age]} years old.`;
  }
}

const john = new Person('John', 30);
console.log(john.getInfo()); // 输出: John is 30 years old.

  1. Symbol.for()
    Symbol.for() 类似单例模式,首先会在全局搜索被登记的 Symbol 中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索。
let yellow = Symbol("Yellow");
let yellow1 = Symbol.for("Yellow");
yellow === yellow1;      // false
 
let yellow2 = Symbol.for("Yellow");
yellow1 === yellow2;     // true
  1. Symbol.keyFor()
    Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。
let yellow1 = Symbol.for("Yellow");
Symbol.keyFor(yellow1);    // "Yellow"
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值