⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

利用 Symbol 实现真正的对象私有属性与元编程

深入理解 Symbol 的不可枚举特性,用于创建隐藏属性、自定义迭代器及元编程模式。 · 难度:入门 · +10XP

利用 Symbol 实现真正的对象私有属性与元编程

传统的 JavaScript 对象属性默认可枚举,容易被 for...in 或 Object.keys 暴露。Symbol 提供了唯一且不可枚举的键,可用于隐藏内部状态,例如缓存、私有计数器或元数据。结合全局 Symbol 注册表(Symbol.for),还可以在多个模块间共享符号而避免冲突。此外,通过知名符号(如 Symbol.iterator、Symbol.toPrimitive)可以定制对象的迭代行为和类型转换,实现深度元编程。本教程将演示如何用 Symbol 构建安全的私有属性,并重新定义对象的底层行为。

const _data = Symbol('data');
class Widget {
  constructor(value) {
    this[_data] = value;
  }
  getData() { return this[_data]; }
  Symbol.toPrimitive {
    return hint === 'string' ? this[_data].toString() : 42;
  }
}
const w = new Widget(100);
console.log(Object.keys(w)); // []
console.log(String(w));      // '100'
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0