JavaScript 中的 Symbols 简介
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论