JS सिंबल्स
In this page:
const symbolName = Symbol("description");
const object = { [symbolName]: value };
Symbols बनाना
Symbol() हर बार कॉल होने पर एक नई, बिल्कुल unique value बनाता है, भले ही आप एक जैसी description string पास करें — कोई भी दो symbols कभी एक-दूसरे के बराबर नहीं होते।
उदाहरण: Creating Symbols
const s1 = Symbol("id");
const s2 = Symbol("id");
console.log(s1 === s2); // false, always unique
Symbol Properties
एक symbol को object property key के रूप में इस्तेमाल किया जा सकता है, और symbol से keyed properties normal enumeration (for...in, Object.keys) से छुपी रहती हैं, जो इन्हें semi-private metadata के लिए उपयोगी बनाता है।
उदाहरण: Symbol Properties
const id = Symbol("id");
const user = { name: "Sam", [id]: 123 };
console.log(Object.keys(user)); // ["name"], symbol hidden
Symbol Descriptions
Symbol(description) को पास की गई optional string सिर्फ debugging/display के मकसद के लिए है (console output या .toString() में दिखती है) और symbol की uniqueness या identity पर कोई असर नहीं डालती।
उदाहरण: Symbol Descriptions
// Declare the constant `s`, set to `Symbol("debug label")`
// Declare the constant `s`, set to `Symbol("debug label")`
const s = Symbol("debug label");
// Print `s.toString()` to the console
// Print `s.toString()` to the console
console.log(s.toString());
// Print `s.description` to the console
// Print `s.description` to the console
console.log(s.description);
Global Symbol Registry
Symbol.for(key) आपके पूरे program में साझा एक global registry में किसी symbol को ढूंढता है (या बनाता है), इसलिए एक ही key के साथ इसे दो बार कॉल करना बिल्कुल वही symbol return करता है — Symbol() के उलट।
उदाहरण: Global Symbol Registry
const a = Symbol.for("shared");
const b = Symbol.for("shared");
console.log(a === b); // true, same registry key
Well-Known Symbols
JavaScript Symbol.iterator जैसे built-in well-known symbols define करता है, जिन्हें objects for...of से iterable बनने के लिए opt-in करने में इस्तेमाल करते हैं — एक core mechanism जिस पर खुद language निर्भर करती है।
उदाहरण: Well-Known Symbols
const arr = [1, 2, 3];
console.log(typeof arr[Symbol.iterator]); // "function", built-in well-known symbol
- दो
Symbol("id")values compare करना और उनके equal होने की उम्मीद करना, जबकि हर call एक unique symbol बनाता है। - किसी symbol को string में concatenate करने की कोशिश करना, जैसे
"id" + sym, जोTypeErrorthrow करता है;sym.toString()या.descriptionइस्तेमाल करें। - यह उम्मीद करना कि symbol keys
for...inयाObject.keys()में दिखेंगी, जबकि उन्हें skip कर दिया जाता है।
Chapter Quiz — Complete all 12 topics to unlock
0/12 topics done
Complete these topics first: