Symbol.keyFor() स्टैटिक मेथड ग्लोबल सिंबल रजिस्ट्री में दिए गए सिंबल से जुड़ी की (स्ट्रिंग) को खोजता है और लौटाता है। यदि सिंबल ग्लोबल रजिस्ट्री में नहीं मिलता (अर्थात Symbol() से बना है, Symbol.for() से नहीं), तो undefined लौटाता है।
उदाहरण
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; padding: 20px; }
div { font-size: 20px; font-weight: 500; }
button { padding: 10px 20px; background: #fd7e14; color: white; border: none; border-radius: 4px; cursor: pointer; }
</style> </head> </head> <body>
<h1>JavaScript Symbol.keyFor() फंक्शन</h1>
<div class="sample"></div>
<button class="Btn">सिंबल की खोजें</button>
<h3>ऊपर दिए गए बटन पर क्लिक करके सिंबल के लिए की खोजें</h3>
<script>
const fillEle = document.querySelector(".sample");
// ग्लोबल रजिस्ट्री में सिंबल (Symbol.for से बने)
const symbol = Symbol.for("HELLO");
const symbol1 = Symbol.for("NEW");
const symbol2 = Symbol.for(711);
// लोकल सिंबल (Symbol() से बने) - keyFor के लिए undefined लौटाएंगे
const localSym = Symbol("LOCAL");
document.querySelector(".Btn").addEventListener("click", () => {
fillEle.innerHTML += "symbol = " + Symbol.keyFor(symbol) + "<br>";
fillEle.innerHTML += "symbol1 = " + Symbol.keyFor(symbol1) + "<br>";
fillEle.innerHTML += "symbol2 = " + Symbol.keyFor(symbol2) + "<br>";
fillEle.innerHTML += "localSym = " + Symbol.keyFor(localSym) + "<br>";
});
</script> </body> </html>
आउटपुट
symbol = HELLO symbol1 = NEW symbol2 = 711 localSym = undefined
मुख्य अंतर
| बनाने का तरीका | Symbol.keyFor() | उपयोग का मामला |
|---|---|---|
Symbol.for("key") | "key" लौटाता है | क्रॉस-रियलम शेयर्ड सिंबल |
Symbol("desc") | undefined | यूनिक, प्राइवेट सिंबल |
व्यावहारिक उपयोग
// 1. सिंबल की पहचान करना
function logSymbol(sym) {
const key = Symbol.keyFor(sym);
if (key) {
console.log(`ग्लोबल सिंबल: ${key}`);
} else {
console.log(`लोकल सिंबल: ${sym.toString()}`);
}
}
// 2. ग्लोबल रजिस्ट्री इंस्पेक्शन (केवल डिबगिंग)
// कोई सीधा तरीका नहीं सभी कीज सूचीबद्ध करने का
// 3. सीरियलाइज़ेशन
function serializeSymbol(sym) {
const key = Symbol.keyFor(sym);
return key ? {type: "global", key} : {type: "local", desc: sym.description};
}
संबंधित: Symbol.for()
Symbol.for(key) ग्लोबल रजिस्ट्री में key के लिए सिंबल खोजता/बनाता है। Symbol.keyFor() इसका विपरीत ऑपरेशन है।