当前位置:首页 > JavaScript

js symbol实现

2026-03-13 23:59:43JavaScript

Symbol 的基本概念

Symbol 是 JavaScript 中的一种原始数据类型,每个 Symbol 值都是唯一的,不可变的。通常用于对象属性的键,以避免属性名冲突。

创建 Symbol

使用 Symbol() 函数可以创建一个新的 Symbol:

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

描述字符串仅用于调试,不影响 Symbol 的唯一性。

Symbol 的唯一性

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

const sym1 = Symbol('foo');
const sym2 = Symbol('foo');
console.log(sym1 === sym2); // false

全局 Symbol 注册表

通过 Symbol.for() 可以在全局注册表中创建或获取 Symbol:

const sym1 = Symbol.for('foo'); // 创建或获取全局 Symbol
const sym2 = Symbol.for('foo');
console.log(sym1 === sym2); // true

使用 Symbol.keyFor() 可以获取全局 Symbol 的描述:

const sym = Symbol.for('foo');
console.log(Symbol.keyFor(sym)); // 'foo'

Symbol 作为对象属性

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

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

内置 Symbol

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

  • Symbol.iterator: 定义对象的默认迭代器
  • Symbol.toStringTag: 自定义对象的 toString 行为
  • Symbol.hasInstance: 自定义 instanceof 操作符的行为

遍历 Symbol 属性

使用 Object.getOwnPropertySymbols() 可以获取对象的所有 Symbol 属性:

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

Symbol 的不可变性

Symbol 值一旦创建就无法更改,也不能被隐式转换为字符串或数字:

js symbol实现

const sym = Symbol('foo');
console.log(String(sym)); // 'Symbol(foo)'
console.log(sym + ''); // TypeError

标签: jssymbol
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…