इस ट्यूटोरियल में, आप उदाहरणों की सहायता से जावास्क्रिप्ट प्रतीक के बारे में जानेंगे।
जावास्क्रिप्ट प्रतीक
जावास्क्रिप्ट ईएस 6 ने एक नया आदिम डेटा प्रकार पेश किया Symbol
। प्रतीक अपरिवर्तनीय हैं (बदले नहीं जा सकते) और अद्वितीय हैं। उदाहरण के लिए,
// two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false
हालाँकि value1 और value2 दोनों में एक ही विवरण है, वे अलग-अलग हैं।
प्रतीक बनाना
आप Symbol()
एक बनाने के लिए फ़ंक्शन का उपयोग करते हैं Symbol
। उदाहरण के लिए,
// creating symbol const x = Symbol() typeof x; // symbol
आप इसके विवरण के रूप में एक वैकल्पिक स्ट्रिंग पास कर सकते हैं। उदाहरण के लिए,
const x = Symbol('hey'); console.log(x); // Symbol(hey)
एक्सेस सिंबल विवरण
एक प्रतीक के विवरण तक पहुंचने के लिए, हम .
ऑपरेटर का उपयोग करते हैं । उदाहरण के लिए,
const x = Symbol('hey'); console.log(x.description); // hey
ऑब्जेक्ट कुंजी के रूप में प्रतीक जोड़ें
आप वर्गाकार कोष्ठकों का उपयोग करके किसी वस्तु में एक कुंजी के रूप में प्रतीकों को जोड़ सकते हैं ()
। उदाहरण के लिए,
let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)
लूप में प्रतीकों को… के लिए शामिल नहीं किया गया है
for… in
पाश पुनरावृति प्रतीकात्मक गुण से अधिक नहीं करता है। उदाहरण के लिए,
let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )
आउटपुट
नाम उम्र
वस्तु में प्रतीकों का उपयोग करने का लाभ
यदि समान कोड स्निपेट का उपयोग विभिन्न कार्यक्रमों में किया जाता है, तो Symbols
ऑब्जेक्ट कुंजी में उपयोग करना बेहतर होता है । ऐसा इसलिए है क्योंकि आप विभिन्न कोड्स में एक ही कुंजी नाम का उपयोग कर सकते हैं और दोहराव के मुद्दों से बच सकते हैं। उदाहरण के लिए,
let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;
उपरोक्त कार्यक्रम में, यदि person
ऑब्जेक्ट का उपयोग किसी अन्य प्रोग्राम द्वारा भी किया जाता है, तो आप ऐसी संपत्ति नहीं जोड़ना चाहेंगे जिसे किसी अन्य प्रोग्राम द्वारा एक्सेस या परिवर्तित किया जा सके। इसलिए उपयोग करके Symbol
, आप एक अद्वितीय संपत्ति बनाते हैं जिसका आप उपयोग कर सकते हैं।
अब, अगर दूसरे प्रोग्राम को भी आईडी नाम की प्रॉपर्टी का उपयोग करना है , तो सिंबल नाम का सिंबल जोड़ें id
और डुप्लिकेट मुद्दे नहीं होंगे। उदाहरण के लिए,
let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";
उपरोक्त कार्यक्रम में, भले ही समान नाम का उपयोग मूल्यों को संग्रहीत करने के लिए किया जाता है, Symbol
डेटा प्रकार का एक अद्वितीय मूल्य होगा।
उपरोक्त कार्यक्रम में, यदि स्ट्रिंग कुंजी का उपयोग किया गया था, तो बाद के कार्यक्रम ने संपत्ति के मूल्य को बदल दिया होगा। उदाहरण के लिए,
let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value
उपरोक्त कार्यक्रम में, दूसरा user.id
पिछले मूल्य को ओवरराइट करता है।
प्रतीक विधियाँ
प्रतीक के साथ विभिन्न विधियाँ उपलब्ध हैं।
तरीका | विवरण |
---|---|
for() | मौजूदा प्रतीकों के लिए खोज करता है |
keyFor() | वैश्विक प्रतीक रजिस्ट्री से एक साझा प्रतीक कुंजी लौटाता है। |
toSource() | एक स्ट्रिंग देता है जिसमें प्रतीक वस्तु का स्रोत होता है |
toString() | एक स्ट्रिंग देता है जिसमें प्रतीक का वर्णन होता है |
valueOf() | प्रतीक वस्तु के आदिम मूल्य को लौटाता है। |
उदाहरण: प्रतीक विधियाँ
// get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id
प्रतीक गुण
गुण | विवरण |
---|---|
asyncIterator | किसी वस्तु के लिए डिफ़ॉल्ट AsyncIterator देता है |
hasInstance | निर्धारित करता है कि क्या एक निर्माणकर्ता वस्तु अपने उदाहरण के रूप में पहचानती है |
isConcatSpreadable | इंगित करता है कि किसी वस्तु को उसके सरणी तत्वों के समतल किया जाना चाहिए |
iterator | किसी वस्तु के लिए डिफ़ॉल्ट पुनरावृत्ति देता है |
match | एक तार के खिलाफ मेल खाता है |
matchAll | एक पुनरावृत्ति देता है जो एक स्ट्रिंग के खिलाफ नियमित अभिव्यक्ति के मेल खाता है |
replace | एक स्ट्रिंग के मिलान के प्रतिस्थापन |
search | एक स्ट्रिंग के भीतर सूचकांक को लौटाता है जो नियमित अभिव्यक्ति से मेल खाता है |
split | नियमित अभिव्यक्ति से मेल खाने वाले सूचकांकों में एक स्ट्रिंग को विभाजित करता है |
species | व्युत्पन्न वस्तुओं को बनाता है |
toPrimitive | एक वस्तु को एक आदिम मान में परिवर्तित करता है |
toStringTag | किसी वस्तु का डिफ़ॉल्ट विवरण देता है |
description | प्रतीक के विवरण युक्त एक स्ट्रिंग लौटाता है |
उदाहरण: प्रतीक गुण उदाहरण
const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))