जावास्क्रिप्ट में, प्रतीक अद्वितीय डेटा प्रकार होते हैं जिनका उपयोग ऑब्जेक्ट गुणों के लिए पहचानकर्ता बनाने के लिए किया जा सकता है। प्रतीक तार या संख्या की तरह नहीं होते हैं, और उन्हें उन डेटा प्रकारों में परिवर्तित नहीं किया जा सकता है। यह वही है जो उन्हें पहचानकर्ता बनाने के लिए आदर्श बनाता है।
जावास्क्रिप्ट में प्रतीकों का उपयोग
जब आप कोई प्रतीक बनाते हैं, तो आप वैकल्पिक रूप से उसका विवरण दे सकते हैं। यह डिबगिंग के लिए उपयोगी है, लेकिन इसकी आवश्यकता नहीं है।
प्रतीक बनाना सरल है।
const mySymbol = Symbol();
आप विवरण के साथ एक प्रतीक भी बना सकते हैं।
const mySymbol = Symbol("my description");
यदि आप एक ही विवरण के साथ कई प्रतीक बनाते हैं, तो वे अलग-अलग मान होंगे।
const sym1 = Symbol("foo");
const sym2 = Symbol("foo");
// false
console.log(sym1 === sym2);
क्या प्रतीक अद्वितीय बनाता है
प्रतीकों को अक्सर वस्तु गुणों के लिए पहचानकर्ता के रूप में उपयोग किया जाता है। ऐसा इसलिए है क्योंकि प्रतीकों के अद्वितीय होने की गारंटी है, और वे स्ट्रिंग्स में परिवर्तित नहीं होते हैं।
const obj = {};
obj[mySymbol] = "bar";
// "bar"
console.log(obj[mySymbol]);
आप ऑब्जेक्ट गुणों के लिए प्रतीकों का उपयोग कुंजी के रूप में कर सकते हैं, लेकिन आप उन्हें JSON में संपत्ति के नाम (कुंजी) के रूप में उपयोग नहीं कर सकते।
const sym = Symbol("foo");
const obj = { [sym]: "bar" };
// {}
console.log(JSON.stringify(obj));
प्रतीक गणना योग्य नहीं हैं, इसलिए जब आप किसी ऑब्जेक्ट पर फॉर-इन लूप का उपयोग करते हैं तो वे दिखाई नहीं देंगे।
const obj = {};
obj[Symbol("a")] = "a";
obj[Symbol("b")] = "b";
for (var key in obj) {
// undefined
console.log(key);
}
किसी ऑब्जेक्ट पर सभी प्रतीकों की एक सरणी प्राप्त करने के लिए आप Object.getOwnPropertySymbols का उपयोग कर सकते हैं।
const obj = {};
obj[Symbol("a")] = "a";
obj[Symbol("b")] = "b";
const symbols = Object.getOwnPropertySymbols(obj);
// [Symbol(a), Symbol(b)]
console.log(symbols);
एक पुनरावर्तक के रूप में एक प्रतीक का उपयोग करना
एक प्रतीक प्राप्त करने के लिए आप जाने-माने Symbol.iterator का उपयोग कर सकते हैं जिसे एक पुनरावर्तक के रूप में उपयोग किया जा सकता है।
const arr = [1, 2, 3];
const it = arr[Symbol.iterator]();
// { value: 1, done: false }
console.log(it.next());
// { value: 2, done: false }
console.log(it.next());
// { value: 3, done: false }
console.log(it.next());
// { value: undefined, done: true }
console.log(it.next());
एक और वास्तविक दुनिया का उदाहरण
आप अपने खुद के प्रतीक बना सकते हैं, लेकिन यह गारंटी देने का कोई तरीका नहीं है कि वे अद्वितीय हैं। यदि आपको एक अद्वितीय प्रतीक की आवश्यकता है, तो आपको प्रतीक () का उपयोग करना चाहिए।
मान लीजिए कि आपके पास एक वस्तु है जो किसी व्यक्ति का प्रतिनिधित्व करती है। आप इस ऑब्जेक्ट में एक संपत्ति जोड़ना चाहते हैं जो व्यक्ति के जन्म वर्ष को संग्रहीत करता है, लेकिन आप नहीं चाहते कि यह संपत्ति गणना योग्य हो। आप इसे एक प्रतीक के साथ कर सकते हैं:
const person = {
name: "John Doe"
};
const birthYear = Symbol("birth year");
person[birthYear] = "1955";
for (var key in person) {
// name
console.log(key);
}
// 1955
console.log(person[birthYear]);