जावास्क्रिप्ट में रैपर ऑब्जेक्ट्स
यह लेख जावास्क्रिप्ट में रैपर ऑब्जेक्ट्स के बारे में बताता है।
YouTube Video
व्रैपर वस्तुएँ (Wrapper Objects)
जावास्क्रिप्ट में प्रिमिटिव प्रकार और उन्हें प्रबंधित करने के लिए ऑब्जेक्ट्स होते हैं (रैपर ऑब्जेक्ट्स)।
प्राथमिक प्रकार (Primitive Types)
प्रिमिटिव प्रकार एक सिंगल वैल्यू का प्रतिनिधित्व करते हैं और साधारण तथा हल्के होते हैं। ये अपरिवर्तनीय (बदलाव के योग्य नहीं) हैं और इनमें सीधे तौर पर ऑब्जेक्ट मेथड्स या प्रॉपर्टीज़ नहीं होतीं, लेकिन इन्हें संचालन के लिए अस्थायी रूप से रैपर ऑब्जेक्ट्स में बदला जा सकता है।
string
और number
प्रिमिटिव प्रकार के उदाहरण हैं। दूसरी ओर, रैपर ऑब्जेक्ट्स बड़े अक्षर से शुरू होते हैं, जैसे String
और Number
।
रैपर ऑब्जेक्ट्स
मूल प्रकारों को नियंत्रित करने के लिए, जावास्क्रिप्ट अस्थायी रूप से आवरण ऑब्जेक्ट (Object
wrappers) उत्पन्न करता है। आवरण ऑब्जेक्ट में प्राइमिटिव प्रकारों के लिए विधियाँ और गुण होते हैं।
Number
1let numObject = new Number(42); // Wrapper object
2
3console.log(typeof numObject); // object
4console.log(numObject.valueOf()); // 42
5
6let numValue = Number(42); // Return primitive value
7
8console.log(typeof numValue); // number
9console.log(numValue); // 42
Number
एक ऑब्जेक्ट प्रकार है जो प्राइमिटिवnumber
को रैप करता है।। एकNumber
ऑब्जेक्ट को स्पष्ट रूप से बनाकर, आप अंकों को एकnumber
की तरह नियंत्रित कर सकते हैं, लेकिन आम तौर पर प्राइमिटिवnumber
प्रकार का उपयोग करने की सिफारिश की जाती है।
typeof numObject
"object"
है, लेकिनtypeof 42
"number"
है।
- ध्यान दें कि
नई
ऑपरेटर का उपयोग करके एक नया आवरण ऑब्जेक्ट बनाने का परिणाम, एक फ़ंक्शन के रूप मेंNumber
को कॉल करने से अलग होता है। जब इसे एक फ़ंक्शन के रूप में कॉल किया जाता है, तो एक प्रिमिटिवnumber
वापस मिलता है।
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- यह एक ऑब्जेक्ट प्रकार है जो एक प्राइमिटिव
string
को रैप करता है।।String
ऑब्जेक्ट का उपयोग करके, आप स्ट्रिंग के गुण और विधियों तक पहुंच सकते हैं, लेकिन आम तौर पर एक प्राइमिटिवstring
का उपयोग किया जाता है।
typeof strObject
"object"
है, लेकिनtypeof "Hello"
"string"
है।
Number
की तरह, एक फ़ंक्शन के रूप मेंString
को कॉल करने पर एक प्राइमिटिवstring
लौटता है।
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- यह एक ऑब्जेक्ट प्रकार है जो एक प्राइमिटिव
boolean
को रैप करता है।। आप स्पष्ट रूप से एकBoolean
ऑब्जेक्ट भी बना सकते हैं, लेकिन आम तौर पर एक प्राइमिटिवboolean
प्रकार का उपयोग किया जाता है।
typeof boolObject
"object"
है, लेकिनtypeof true
"boolean"
है।
Number
के समान, एक फ़ंक्शन के रूप मेंBoolean
को कॉल करने पर एक प्राइमिटिवboolean
लौटता है।
BigInt
1let bigIntObject = Object(9007199254740991n); // Wrapper object
2
3console.log(typeof bigIntObject); // object
4console.log(bigIntObject.valueOf()); // 9007199254740991n
5
6let bigIntValue = BigInt(9007199254740991); // Return primitive BigInt
7
8console.log(typeof bigIntValue); // bigint
9console.log(bigIntValue); // 9007199254740991n
10
11// Error
12let bigIntObject2 = new BigInt(9007199254740991n);
Object
を使ってBigInt
のラッパーオブジェクトを生成できますが、通常はプリミティブ型のbigint
を直接使うのが一般的です。
typeof bigIntObject
は"object"
であるのに対し、typeof 9007199254740991n
は"bigint"
です。
BigInt
を関数として呼び出すとプリミティブなbigint
を返しますが、new
演算子をつけてBigInt
のラッパーオブジェクトを生成することはできません。
Symbol
1let symObject = Object(Symbol("id")); // Wrapper object for Symbol
2
3console.log(typeof symObject); // object
4console.log(symObject.valueOf()); //
- आप
Symbol
के लिए एक रैपर ऑब्जेक्ट बनाने के लिएObject
का उपयोग कर सकते हैं, लेकिन आम तौर पर आप सीधेSymbol
प्राइमिटिव प्रकार का उपयोग करते हैं।
मूल प्रकार और आवरण ऑब्जेक्ट के बीच अंतर
- मूल प्रकार हल्के और स्मृति-कुशल होते हैं, लेकिन इनमें सीधे गुण या विधियाँ नहीं होती हैं। हालांकि, जावास्क्रिप्ट में, यहां तक कि प्राइमिटिव प्रकार के साथ भी, आवश्यकतानुसार विधियाँ और गुण प्रदान करने के लिए अस्थायी आवरण ऑब्जेक्ट स्वचालित रूप से बनाए जाते हैं।
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
- आवरण ऑब्जेक्ट स्पष्ट रूप से उत्पन्न किए गए ऑब्जेक्ट होते हैं जो स्मृति और प्रदर्शन को प्रभावित कर सकते हैं, इसलिए आम तौर पर प्राइमिटिव प्रकारों का उपयोग करने की सिफारिश की जाती है।
निष्कर्ष
- प्रिमिटिव प्रकार: हल्के प्रकार जैसे
number
,string
,boolean
,null
,undefined
, औरsymbol
जिनके पास प्रत्यक्ष विधियाँ नहीं होती हैं। - रैपर ऑब्जेक्ट्स:
Number
,String
, औरBoolean
जैसे ऑब्जेक्ट्स जो अस्थायी रूप से प्रिमिटिव प्रकारों से परिवर्तित किए जाते हैं।
आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।