当前位置:首页 > JavaScript

js实现symbol

2026-04-05 22:36:26JavaScript

Symbol 基本概念

Symbol 是 JavaScript 中的一种原始数据类型,表示唯一且不可变的值,通常用作对象属性的键。每个 Symbol 值都是唯一的,即使它们具有相同的描述。

创建 Symbol

通过 Symbol() 函数创建 Symbol,可以传入一个可选的描述字符串:

const sym1 = Symbol();
const sym2 = Symbol('description');

Symbol 的特性

Symbol 值是唯一的,即使描述相同:

js实现symbol

Symbol('foo') === Symbol('foo'); // false

全局 Symbol 注册表

使用 Symbol.for() 可以在全局注册表中创建或获取 Symbol。相同的 key 会返回相同的 Symbol:

const globalSym = Symbol.for('global');
Symbol.for('global') === globalSym; // true

常用 Symbol 方法

  • Symbol.keyFor(sym):返回全局 Symbol 的 key
    const globalSym = Symbol.for('global');
    Symbol.keyFor(globalSym); // 'global'

Symbol 作为对象属性

Symbol 可以作为对象的唯一键,避免属性名冲突:

js实现symbol

const obj = {};
const sym = Symbol('key');
obj[sym] = 'value';
console.log(obj[sym]); // 'value'

内置 Symbol

JavaScript 提供了一些内置 Symbol,用于自定义对象行为:

  • Symbol.iterator:定义对象的默认迭代器
  • Symbol.toStringTag:自定义对象的 toString 行为
    const obj = {
    };
    console.log(obj.toString()); // [object MyObject]

Symbol 的注意事项

  • Symbol 不能使用 new 操作符
  • Symbol 不会被 for...inObject.keys() 枚举
  • 可以通过 Object.getOwnPropertySymbols() 获取对象的 Symbol 属性

实际应用示例

实现一个简单的迭代器:

const iterableObj = {
  [Symbol.iterator]: function* () {
    yield 1;
    yield 2;
    yield 3;
  }
};
for (const item of iterableObj) {
  console.log(item); // 1, 2, 3
}

标签: jssymbol
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…