JavaScript 中的 Symbols 简介

发布于 2022-09-11 13:52:45 字数 1705 浏览 157 评论 0

Symbols 是 JavaScript 中的一种原始数据类型,例如 number, boolean 或者 null,它们通常用于避免属性名称冲突,或模拟 JavaScript 对象的私有值。

您可以通过调用全局函数来创建 Symbol()

const sym = Symbol();

Symbol() 函数接受一个参数,一个字符串 description 打印 Symbols 时会显示。

const sym = Symbol('my description');

console.log(sym); // Prints "Symbol(my description)"

主要特征

Symbols 有两个关键特征。 第一个关键特征是 没有两个 Symbols 永远相等 。 即使两个 Symbols 具有相同的描述,它们也不相等。

Symbol() === Symbol(); // false

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

第二个关键特性是 对象键可以是 Symbols。通常对象键只能是 Symbols 或字符串。

const test = Symbol('test');

const obj = {};
obj.test = 'hello';
obj[test] = 'world';

obj.test; // 'hello'
obj[test]; // 'world'

由于没有两个 Symbols 永远相等,因此除非您有权访问 Symbols,否则您无法访问 Symbols 属性。 这使得 Symbols 可以方便地创建只能在特定函数中访问的隐藏值。

function addSymbol(obj) {
  const sym = Symbol('test');
  obj[sym] = 'my hidden value';

  return obj;
}

const obj = addSymbol({});
// No way to access obj[sym] here, unless you explicitly look
// into `Object.getOwnPropertySymbols()`.

Symbols 也被排除在外 JSON.stringify() 输出,这使得它们非常适合存储最终用户不应该看到的纯程序数据。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

柒夜笙歌凉

暂无简介

0 文章
0 评论
357 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文