"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Symbols and Objects in JS♥

Symbols and Objects in JS♥

Published on 2024-11-08
Browse:115

Symbols and Objects in JS♥

Symbol Datatype

Symbol is a datatype in JS. It typically used for creating unique keys and hidden object keys in Javascript.

There are two types of symbols

  1. Local Symbols - They are not registered in global symbol registry and values are unique even with same descriptor.
  2. Global Symbols - They are registered in global symbol registry and values are not unique

global symbol registry:The global symbol registry is a space where symbols created using Symbol.for are stored.

syntax
In Below example "john" is a descriptor and key_one and key_two are symbol.

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

Key difference

Descriptor of same values are not same in local symbols

As I told earlier that every symbol is unique even If descriptor is same in local symbols. Lets validate it.

app

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

Descriptor of same values are same in global symbols

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

some facts about objects and symbols

  1. symbols are not converted into string.
  2. You cannot access both symbols using for...in loop
  3. You cannot access both symbols even with Object.keys() property
  4. Every key in objects are converted into string even numbers.
  5. You can see all symbols of an object using Object.getOwnPropertySymbols() function

app

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)]

how to get descriptor in Symbol.for()

Using Symbol.keyFor(symbol) can get you descriptor of global symbols

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

Please support me on dev.to and linkedin ?. TY?

Release Statement This article is reproduced at: https://dev.to/aryan015/symbols-and-objects-in-js-3ko7?1 If there is any infringement, please contact [email protected] to delete it
Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3