जावास्क्रिप्ट में symbol.description प्रॉपर्टी एक Symbol ऑब्जेक्ट को प्रिमिटिव वैल्यू में बदलती है। सिंटैक्स इस प्रकार है:
Symbol()[Symbol.toPrimitive](hint);
उदाहरण 1
<!DOCTYPE html>
<html>
<body>
<h2>डेमो हेडिंग</h2>
<p>डिस्प्ले करने के लिए क्लिक करें...</p>
<button onclick="display()">परिणाम</button>
<p id="test"></p>
<script>
function display() {
const val = Symbol('john');
console.log(val[Symbol.toPrimitive]);
}
</script>
</body>
</html>
उदाहरण 2
<!DOCTYPE html>
<html>
<body>
<h2>डेमो हेडिंग</h2>
<p>डिस्प्ले करने के लिए क्लिक करें...</p>
<button onclick="display()">परिणाम</button>
<p id="test"></p>
<script>
function display() {
const val = Symbol(2465);
var res = val[Symbol.toPrimitive](99);
console.log(res);
}
</script>
</body>
</html>
सही समझ
मूल लेख में भ्रम है। स्पष्टीकरण:
Symbol.description(ES2019) - सिम्बल के विवरण को स्ट्रिंग के रूप में लौटाता हैSymbol.toPrimitive- ऑब्जेक्ट-टू-प्रिमिटिव कन्वर्जन के लिए आंतरिक मेथड
Symbol.description (सही उपयोग)
const sym1 = Symbol('my description');
const sym2 = Symbol();
console.log(sym1.description); // "my description"
console.log(sym2.description); // undefined
// डिबगिंग के लिए उपयोगी
const USER_ID = Symbol('user-id');
console.log(USER_ID.description); // "user-id"
Symbol.toPrimitive (कस्टम कन्वर्जन)
const obj = {
value: 42,
[Symbol.toPrimitive](hint) {
switch (hint) {
case 'number': return this.value;
case 'string': return `[Value: ${this.value}]`;
case 'default': return this.value;
}
}
};
console.log(+obj); // 42 (number)
console.log(`${obj}`); // "[Value: 42]" (string)
console.log(obj + 10); // 52 (default -> number)
नोट: Symbol.description रीड-ओनली प्रॉपर्टी है जो सिम्बल निर्माण के समय सेट होती है।