首页  >  文章  >  web前端  >  JS 中的符号和对象♥

JS 中的符号和对象♥

Linda Hamilton
Linda Hamilton原创
2024-10-11 18:38:02693浏览

Symbols and Objects in JS♥

符号数据类型

Symbol 是 JS 中的一种数据类型。它通常用于在 Javascript 中创建唯一键和隐藏对象键。

有两种类型的符号

  1. 本地符号 - 它们未在全局符号注册表中注册,即使具有相同的描述符,值也是唯一的。
  2. 全局符号 - 它们在全局符号注册表中注册,并且值不唯一

全局符号注册表:全局符号注册表是存储使用Symbol.for创建的符号的空间。

语法
在下面的示例中,“john”是描述符,key_one 和 key_two 是符号。

const key_one = Symbol("john"); //local symbol
const key_two = Symbol.for("john"); //global symbol
console.log(typeof key_one) // symbol
console.log(typeof key_two); //symbol

主要区别

相同值的描述符在局部符号中不相同

正如我之前所说,即使本地符号中的描述符相同,每个符号都是唯一的。让我们验证一下。

应用程序

const key_one = Symbol("john");
const key_two = Symbol("john");
key_one == key_two // false
key_one === key_two //false

相同值的描述符在全局符号中是相同的

const key_one = Symbol.for("foo");
const key_two = Symbol.for("foo");
console.log(key_one === key_two); //true

关于物体和符号的一些事实

  1. 符号不会转换为字符串。
  2. 您无法使用 for...in 循环访问这两个符号
  3. 即使使用 Object.keys() 属性也无法访问这两个符号
  4. 对象中的每个键都会转换为字符串偶数。
  5. 您可以使用Object.getOwnPropertySymbols()函数查看对象的所有符号

应用程序

const zero = Symbol("0");
const temp = {
 0:"zero",
 1:"one",
 [zero]:"zero",
 1.1:"one one",
}
const keys = Object.keys(temp); //["0","1","1.1"]
console.log(temp[1.1]) // one one
console.log(Object.getOwnPropertySymbols(temp)) // [Symbol(0)]

如何在Symbol.for()中获取描述符

使用Symbol.keyFor(symbol)可以获得全局符号的描述符

const key_one = Symbol.for("john")
Symbol.keyFor(key_one) // "john"
typeof Symbol.keyFor(key_one) //string

请在 dev.to 和 linkedin 上支持我?。 TY?

以上是JS 中的符号和对象♥的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn