es2020学习笔记-Symbol

59 阅读1分钟

Symbol 是 JavaScript 中的一种基本数据类型,它的主要特点是每个 Symbol 值都是唯一的,这意味着你可以创建一个标识符,它永远不会与其他任何标识符冲突。这使得 Symbol 非常适合作为对象属性的键,特别是当你想要创建一些不会与其他属性冲突的属性时。

你可以使用 Symbol() 函数来创建一个 Symbol 值:

let sym1 = Symbol();
let sym2 = Symbol('description'); // 可选的字符串描述

注意,Symbol 函数不能与 new 关键字一起使用。

Symbol 的常用方法包括:

  1. Symbol.for(key): 这个方法会首先检查是否存在一个与给定键关联的 Symbol 值。如果存在,则返回该 Symbol 值,否则,它将创建一个新的 Symbol 值,并与给定的键关联。
let sym1 = Symbol.for('key'); // 创建或获取一个与 'key' 关联的 Symbol
let sym2 = Symbol.for('key'); // 获取已存在的 Symbol

console.log(sym1 === sym2); // 输出: true
  1. Symbol.keyFor(sym): 这个方法返回一个与 Symbol 关联的字符串键。如果 Symbol 没有关联的键,则返回 undefined
let sym = Symbol.for('key');
console.log(Symbol.keyFor(sym)); // 输出: 'key'
  1. Symbol.iterator: 这是一个内置的 Symbol 值,它被用作一个默认的迭代器方法。当一个对象需要被迭代(例如,在一个 for...of 循环中)时,它的 @@iterator 方法会被调用。
let arr = [1, 2, 3];
let iterator = arr[Symbol.iterator]();

console.log(iterator.next()); // 输出: { value: 1, done: false }
console.log(iterator.next()); // 输出: { value: 2, done: false }
console.log(iterator.next()); // 输出: { value: 3, done: false }
console.log(iterator.next()); // 输出: { value: undefined, done: true }

这些是 Symbol 的基本概念和常用方法。Symbol 是一个非常强大的工具,它可以帮助你创建独一无二的标识符,避免命名冲突,并控制对象的迭代行为。