JavaScript Academy · पाठ

ऑब्जेक्ट कुंजियों के रूप में Symbol

टकराव-रहित प्रॉपर्टीज़ के लिए Symbol का उपयोग कीजिए।

पाठ 2, कुल 4 में से13 चरण

ऑब्जेक्ट कुंजियों के रूप में Symbol, CoddyKit पर JavaScript Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह JavaScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

कुंजियों के रूप में सिंबल

किसी सिंबल का उपयोग object property key के रूप में किया जा सकता है। क्योंकि हर सिंबल विशिष्ट होता है, ऐसी property किसी string key से अनजाने में टकरा नहीं सकती।

const id = Symbol("id")
const user = {}
user[id] = 123
console.log(user[id])

परिकलित सिंबल कुंजियाँ

किसी object literal में सिंबल को key के रूप में उपयोग करने के लिए उसे square brackets में computed property name के रूप में रखें।

const id = Symbol("id")
const user = {
  name: "Ann",
  [id]: 99
}
console.log(user[id])

सिंबल प्रॉपर्टी पढ़ना

किसी property को पढ़ने के लिए आपके पास उसी सिंबल का reference होना चाहिए। उस reference के बिना value प्रभावी रूप से छिपी रहती है।

const secret = Symbol("secret")
const obj = { [secret]: "hidden" }
console.log(obj[secret])

for-in में enumerable नहीं

for-in loop में सिंबल कुंजियों को छोड़ दिया जाता है। इससे सिंबल properties सामान्य iteration से बाहर रहती हैं।

const tag = Symbol("tag")
const obj = { a: 1, b: 2, [tag]: 3 }
for (const key in obj) {
  console.log(key)
}

Object.keys द्वारा छोड़ी गई

Object.keys केवल string keys लौटाता है, इसलिए सिंबल-कुंजी वाली properties भी इससे बाहर रहती हैं।

const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
console.log(Object.keys(obj))

JSON से छिपी हुई

JSON.stringify सिंबल कुंजियों को पूरी तरह अनदेखा करता है, इसलिए वे serialized output में कभी दिखाई नहीं देतीं। इससे वे internal metadata के लिए उपयोगी बनती हैं।

const meta = Symbol("meta")
const obj = { name: "Bo", [meta]: "internal" }
console.log(JSON.stringify(obj))

सिंबल कुंजियाँ खोजना

सिंबल कुंजियों की सूची बनाने के लिए Object.getOwnPropertySymbols का उपयोग करें। यह किसी object की सिंबल properties का array लौटाता है।

const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
const syms = Object.getOwnPropertySymbols(obj)
console.log(syms.length)

नामों की टक्कर से बचना

सिंबल कुंजियाँ अलग-अलग libraries को एक ही object में properties जोड़ने देती हैं, बिना एक-दूसरे की properties के overwrite होने के जोखिम के, क्योंकि उनके सिंबल अलग होते हैं।

const libA = Symbol("data")
const libB = Symbol("data")
const shared = {}
shared[libA] = 1
shared[libB] = 2
console.log(shared[libA], shared[libB])

सिंबल कुंजियाँ और spread

Object spread operator सिंबल कुंजियों को copy करता है, जबकि for-in और Object.keys ऐसा नहीं करते। इसलिए cloning के दौरान इनके साथ चले आने का ध्यान रखें।

const tag = Symbol("tag")
const src = { a: 1, [tag]: 2 }
const copy = { ...src }
console.log(copy[tag])

निजी-जैसे data को संग्रहीत करना

सिंबल कुंजियाँ privacy का एक हल्का रूप देती हैं: data तक केवल उसी code की पहुँच होती है जिसके पास सिंबल है, इसलिए वह सामान्य property listings में दिखाई नहीं देता।

const balance = Symbol("balance")
function makeAccount() {
  const acct = {}
  acct[balance] = 100
  return { acct: acct, key: balance }
}
const a = makeAccount()
console.log(a.acct[a.key])

सिंबल properties हटाना

किसी सिंबल property को भी अन्य properties की तरह ही हटाया जाता है—सिंबल reference के साथ delete operator का उपयोग करके।

const tag = Symbol("tag")
const obj = { [tag]: 5 }
delete obj[tag]
console.log(obj[tag])

त्वरित जाँच

सिंबल कुंजियों से जुड़ी अपनी जानकारी जाँचें।

पुनरावलोकन

पुनरावलोकन: सिंबल सुरक्षित और छिपी हुई object keys बनाते हैं।

  • परिकलित सिंबल कुंजियों के लिए square brackets का उपयोग करें
  • for-in, Object.keys और JSON द्वारा छोड़ दी जाती हैं
  • Object.getOwnPropertySymbols के माध्यम से सूचीबद्ध की जाती हैं
  • टक्कर-मुक्त metadata के लिए बहुत उपयोगी
const k = Symbol("k")
const o = { [k]: 7 }
console.log(o[k])
शुरुआत निःशुल्क

एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
59
पाठ
200

अक्सर पूछे जाने वाले प्रश्न

क्या “ऑब्जेक्ट कुंजियों के रूप में Symbol” पाठ निःशुल्क है?

हाँ — JavaScript Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “ऑब्जेक्ट कुंजियों के रूप में Symbol” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“ऑब्जेक्ट कुंजियों के रूप में Symbol” में मैं क्या सीखूँगा?

टकराव-रहित प्रॉपर्टीज़ के लिए Symbol का उपयोग कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ JavaScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या JavaScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर JavaScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“ऑब्जेक्ट कुंजियों के रूप में Symbol” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस JavaScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर JavaScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. अद्वितीय Symbol बनाना
  2. ऑब्जेक्ट कुंजियों के रूप में Symbol
  3. वैश्विक Symbol रजिस्ट्री
  4. ज्ञात-प्रसिद्ध Symbol
← JavaScript Academy पर वापस जाएँ