खोज…


वाक्य - विन्यास

  • प्रतीक()
  • प्रतीक (विवरण)
  • Symbol.toString ()

टिप्पणियों

ईसीएमएस्क्रिप्ट 2015 विनिर्देश 19.4 प्रतीक

प्रतीक आदिम प्रकार की मूल बातें

ES6 में Symbol एक नया आदिम प्रकार है। प्रतीकों का उपयोग मुख्य रूप से संपत्ति की कुंजी के रूप में किया जाता है, और इसकी मुख्य विशेषताओं में से एक यह है कि वे अद्वितीय हैं , भले ही उनका विवरण समान हो। इसका मतलब है कि उनके पास कभी भी किसी अन्य संपत्ति कुंजी के साथ एक नाम संघर्ष नहीं होगा जो एक symbol या string

const MY_PROP_KEY = Symbol();
const obj = {};

obj[MY_PROP_KEY] = "ABC";
console.log(obj[MY_PROP_KEY]); 

इस उदाहरण में, console.log का परिणाम ABC होगा।

आपने प्रतीकों का नाम भी दिया है:

const APPLE    = Symbol('Apple');
const BANANA   = Symbol('Banana');
const GRAPE    = Symbol('Grape');

इनमें से प्रत्येक मूल्य अद्वितीय हैं और इन्हें ओवरराइड नहीं किया जा सकता है।

आदिम प्रतीकों का निर्माण करते समय एक वैकल्पिक पैरामीटर (description) प्रदान करना डिबगिंग के लिए उपयोग किया जा सकता है, लेकिन प्रतीक को स्वयं एक्सेस करने के लिए नहीं (लेकिन वैश्विक साझा प्रतीकों को पंजीकृत / देखने के तरीके के लिए Symbol.for() उदाहरण देखें)।

एक प्रतीक को एक स्ट्रिंग में परिवर्तित करना

अधिकांश अन्य जावास्क्रिप्ट ऑब्जेक्ट्स के विपरीत, कॉन्टेक्ट करते समय प्रतीकों को स्वचालित रूप से स्ट्रिंग में परिवर्तित नहीं किया जाता है।

let apple = Symbol('Apple') + ''; // throws TypeError!

इसके बजाय, उन्हें आवश्यक रूप से एक स्ट्रिंग में परिवर्तित किया जाना है, (उदाहरण के लिए, प्रतीक का एक शाब्दिक विवरण प्राप्त करने के लिए जो डिबग संदेश में उपयोग किया जा सकता है) का उपयोग करके toString विधि या String कंस्ट्रक्टर।

const APPLE = Symbol('Apple');
let str1 = APPLE.toString(); // "Symbol(Apple)"
let str2 = String(APPLE);    // "Symbol(Apple)"

वैश्विक, साझा किए गए प्रतीकों को बनाने के लिए Symbol.for () का उपयोग करना

Symbol.for पद्धति आपको नाम से वैश्विक प्रतीकों को पंजीकृत करने और देखने की अनुमति देती है। पहली बार इसे दी गई कुंजी के साथ कहा जाता है, यह एक नया प्रतीक बनाता है और इसे रजिस्ट्री में जोड़ता है।

let a = Symbol.for('A');

अगली बार जब आप Symbol.for('A') कॉल Symbol.for('A') , तो वही सिंबल एक नए के बजाय वापस आएगा ( Symbol('A') विपरीत जो एक नया, अनोखा सिंबल बनाएगा, जिसमें एक ही विवरण हो। )।

a === Symbol.for('A') // true

परंतु

a === Symbol('A') // false


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow