← Back to JavaScript Course | Chapter 5: ES6+ Features | Lesson 9 of 12

JS सिंबल्स

एक Symbol एक अनोखा label है जो कभी किसी दूसरे के बराबर नहीं होता, जैसे एक unique fingerprint। इसका इस्तेमाल property names के लिए होता है जिन्हें आपस में टकराना नहीं चाहिए।
Syntax
javascript
const symbolName = Symbol("description");
const object = { [symbolName]: value };

Symbols बनाना

Symbol() हर बार कॉल होने पर एक नई, बिल्कुल unique value बनाता है, भले ही आप एक जैसी description string पास करें — कोई भी दो symbols कभी एक-दूसरे के बराबर नहीं होते।

उदाहरण: Creating Symbols

javascript
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

javascript
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

javascript
// 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

javascript
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

javascript
const arr = [1, 2, 3];
console.log(typeof arr[Symbol.iterator]); // "function", built-in well-known symbol
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. दो Symbol("id") values compare करना और उनके equal होने की उम्मीद करना, जबकि हर call एक unique symbol बनाता है।
  2. किसी symbol को string में concatenate करने की कोशिश करना, जैसे "id" + sym, जो TypeError throw करता है; sym.toString() या .description इस्तेमाल करें।
  3. यह उम्मीद करना कि symbol keys for...in या Object.keys() में दिखेंगी, जबकि उन्हें skip कर दिया जाता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.