ECMAScript रेफरेंस टाइप
- पिछला पृष्ठ ECMAScript टाइप कनवर्शन
- अगला पृष्ठ एक राशि ऑपरेटर
रेफरेंस टाइपों को आमतौर पर क्लास कहा जाता है。
यह ट्यूटोरियल बहुत से ECMAScript पूर्व-निर्धारित रेफरेंस टाइपों की चर्चा करेगा。
रेफरेंस टाइप
रेफरेंस टाइपों को आमतौर पर क्लास कहा जाता है, अर्थात, जब कोई रेफरेंस मूल्य आता है, तो संभाला जाता है वह ऑब्जेक्ट है।
यह ट्यूटोरियल बहुत से ECMAScript पूर्व-निर्धारित रेफरेंस टाइपों की चर्चा करेगा。
अब से आगे, हम विचार करेंगे जो पहले से ही चर्चा की गई मूल टाइपों से निकटता रखते हैं।
ध्यान:यहाँ परंपरागत रूप से, ECMAScript कोई वास्तविक क्लास नहीं है। वास्तव में, ECMA-262 में 'क्लास' इस शब्द का कोई उल्लेख नहीं है। ECMAScript 'ऑब्जेक्ट डिफाइनिशन' निर्धारित करता है जो दूसरे प्रोग्रामिंग भाषाओं में क्लास के समान है।
सूचना:इस पाठ्यक्रम में 'वस्तु' शब्द का उपयोग किया जाएगा।
वस्तु न्यू ऑपरेटर के साथ और वस्तु के नाम के साथ बनाई जाती है।उदाहरण के लिए, नीचे दिए गए कोड में Object वस्तु की उदाहरण बनाई जाती है:
var o = new Object();
यह संरचना Java भाषा के समान है, लेकिन जब एक से अधिक पारामीटर होते हैं तो ECMAScript को बंदलिंगों का उपयोग करना चाहिए।यदि कोई पारामीटर नहीं होता है, जैसा कि नीचे दिया गया कोड में दिखाई देता है, बंदलिंगों को छोड़ सकते हैं:
var o = new Object;
ध्यान:जोरा जोरा के साथ, बंदलिंगों का उपयोग नहीं करना चाहिए, लेकिन मिश्रण को रोकने के लिए बेहतर है।
सूचना:हम इस वस्तु के आधार पर इस अध्याय में और गहरी जाँच करेंगे।
इस चयन का विशेष ध्यान इसी समान मूल वर्ग के संदर्भ में है।
Object वस्तु
Object वस्तु खुद को खुद में बहुत कम उपयोगी है, लेकिन अन्य वर्गों को समझने से पहले, इसकी समझ करना चाहिए।क्योंकि ECMAScript में Object वस्तु जैवा java.lang.Object के समान है, ECMAScript की सभी वस्तुओं की इस वस्तु से विरासत होती है, Object वस्तु के गुण और विधियाँ अन्य वस्तुओं में भी दिखाई देती हैं, इसलिए Object वस्तु को समझने से अन्य वस्तुओं को बेहतर समझा जा सकता है।
Object वस्तु के पास निम्नलिखित गुण हैं:
- constructor
- वस्तु को बनाने वाले फ़ंक्शन के संदर्भ (पिंडर)
- Prototype
- इस वस्तु के वस्तु मूल वस्तु के संदर्भ
Object वस्तु के पास कई विधियाँ हैं:
- hasOwnProperty(property)
- वस्तु को किसी विशेष गुण के रूप में होने के लिए क्या हो सकता है यह निर्धारित करता है।गुण को चारों ओर बड़ा करके निर्दिष्ट करना चाहिए।(उदाहरण में،o.hasOwnProperty("name"))
- IsPrototypeOf(object)
- इस वस्तु को दूसरी वस्तु के मूल वस्तु के रूप में होने के लिए क्या हो सकता है यह निर्धारित करता है।
- PropertyIsEnumerable
- दिया गया गुण को for...in वाक्यांश से चलाने के लिए क्या हो सकता है यह निर्धारित करता है।
- ToString()
- वस्तु के मूल स्ट्रिंग प्रतिनिधित्व को वापस करता है।Object वस्तु के लिए, ECMA-262 इस मूल्य को परिभाषित नहीं करता है, इसलिए विभिन्न ECMAScript कार्यान्वयनों में विभिन्न मूल्यों होते हैं।
- ValueOf()
- इस वस्तु के लिए सर्वश्रेष्ठ मूल मूल्य वापस करता है।कई वस्तुओं के लिए, इस विधि द्वारा वापस की जाने वाली मूल्यों को ToString() के वापस की जाने वाली मूल्यों के समान माना जाता है।
टिप्पणी:ऊपर दिए गए सभी गुणों और तरीकों को अन्य ऑब्जेक्ट द्वारा ओवरराइड किया जाएगा।
Boolean ऑब्जेक्ट
Boolean ऑब्जेक्ट Boolean आरंभिक तरीके का रेफरेंस तरीका है।
Boolean ऑब्जेक्ट बनाने के लिए बस Boolean मूल्य को पैरामीट के रूप में भेजें:
var oBooleanObject = new Boolean(true);
Boolean ऑब्जेक्ट Object ऑब्जेक्ट के ValueOf() मथड़ी को ओवरराइड करेगा, जो मूल्य वापस देता है, यानी true और false। ToString() मथड़ी भी ओवरराइड करेगी, जो
दुख की बात है कि ECMAScript में Boolean ऑब्जेक्ट का उपयोग कम होता है, और जो भी उपयोग किया जाता है, वह भी समझने में कठिन है।
समस्याएँ आमतौर पर Boolean अभिव्यक्ति में Boolean ऑब्जेक्ट का उपयोग करते समय पैदा होती हैं। उदाहरण के लिए:
var oFalseObject = new Boolean(false); var bResult = oFalseObject && true; //आउटपुट true
इस कोड में false मूल्य से Boolean ऑब्जेक्ट बनाया गया है। फिर इस मूल्य को आरंभिक मूल्य true से AND ऑपरेशन किया जाता है। Boolean ऑपरेशन में false और true का AND ऑपरेशन का परिणाम false है। लेकिन इस कोड के इस पंक्ति में, oFalseObject की गणना की जा रही है, न कि उसके मूल्य false की।
जैसे पहले चर्चा की गई है, Boolean अभिव्यक्ति में, सभी ऑब्जेक्ट ऑटोमेटिक रूप से true में बदल जाते हैं, इसलिए oFalseObject का मूल्य true है। फिर true को true से AND ऑपरेशन किया जाता है, जिसका परिणाम true है।
ध्यान:यदि आप Boolean ऑब्जेक्ट की उपलब्धता को समझते हैं, तो बेहतर होगा कि आप Boolean आरंभिक मूल्य का उपयोग करें, ताकि इस चैप्टर में चर्चा की गई समस्याओं के लिए रोकथाम की जा सके।
देखें
Boolean ऑब्जेक्ट के बारे में अधिक जानकारी के लिए देखें जावास्क्रिप्ट बॉल्यूएन ऑब्जैक्ट रेफरेंस मैनुअल。
Number ऑब्जेक्ट
जैसे आपको आशंका हो सकती है, नंबर ऑब्जेक्ट नंबर आरंभिक तरीके का रेफरेंस तरीका है। नंबर ऑब्जेक्ट बनाने के लिए नीचे दिए गए कोड का उपयोग करें:
var oNumberObject = new Number(68);
आपने इस चैप्टर के पहले भाग में चर्चा की गई विशेष मूल्यों (जैसे Number.MAX_VALUE) के बारे में नंबर ऑब्जेक्ट को पहचाना चाहिए। सभी विशेष मूल्य नंबर ऑब्जेक्ट के स्थायी गुण हैं।
नंबर ऑब्जेक्ट का आरंभिक मूल्य प्राप्त करने के लिए valueOf() मथड़ी का उपयोग करें:
var iNumber = oNumberObject.valueOf();
बेशक, Number क्लास में toString() विधि भी है, जिसे प्रकार परिवर्तन के विषय में विस्तार से चर्चा की गई है。
सामान्य Object ऑब्जेक्ट से विरासत की गई मानक विधियों के अलावा, Number ऑब्जेक्ट के पास कुछ विशिष्ट नंबर संसाधन विधियाँ हैं。
toFixed() विधि
toFixed() विधि निर्दिष्ट दशांकों के साथ नंबर का स्ट्रिंग रूप प्रदान करती है। उदाहरण के लिए:
var oNumberObject = new Number(68); alert(oNumberObject.toFixed(2)); //आउटपुट "68.00"
यहाँ, toFixed() विधि का पारामीटर 2 है, जो दो दशांकों को प्रदर्शित करने का इशारा करता है। इस विधि का परिणाम "68.00" है, खाली स्थानों को 0 से पूरा किया जाता है। मुद्रा के लिए उपयोग के लिए इस विधि को बहुत उपयोगी माना जाता है।toFixed() विधि 0 से 20 दशांकों तक के नंबर को प्रस्तुत कर सकती है, इस से बढ़ कर आने वाले वैल्यू को यह विधि रोक सकती है।
toExponential() विधि
फॉर्मेटिंग नंबर से संबंधित एक अन्य विधि toExponential() है, जो वैज्ञानिक गणितीय रूप में प्रस्तुत संख्या का स्ट्रिंग रूप प्रदान करती है。
toFixed() विधि के समान, toExponential() विधि भी एक पारामीटर है, जो आउटपुट में बाइनरी अंकों की संख्या निर्दिष्ट करता है। उदाहरण के लिए:
var oNumberObject = new Number(68); alert(oNumberObject.toExponential(1)); //आउटपुट "6.8e+1"
इस कोड का परिणाम "6.8e+1" है, पहले बताया है, यह 6.8x10 को प्रस्तुत करता है1सवाल है, अगर नहीं जानते कि संख्या को कौन से रूप (निर्दिष्ट रूप या इंडेक्स रूप) में प्रस्तुत करना है, तो toPrecision() विधि का उपयोग कर सकते हैं।
toPrecision() विधि
toPrecision() विधि संख्या को सबसे महत्वपूर्ण रूप में वापस करती है या संख्या का निर्दिष्ट रूप या इंडेक्स रूप में। इसके पास एक पारामीटर है, जो संख्या को प्रस्तुत करने वाले अंकों की संख्या है (इंडेक्स को छोड़कर)। उदाहरण के लिए:
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(1)); //आउटपुट "7e+1"
इस कोड का काम है दिग्गज 68 को एक अंक के साथ प्रस्तुत करना, परिणाम "7e+1" है, अन्य रूप में प्रस्तुत करने के लिए 70 है। वास्तव में, toPrecision() विधि संख्या को छोटी करती है। लेकिन, यदि 2 अंकों के साथ 68 को प्रस्तुत करना है, तो यह आसान है:
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(2)); //आउटपुट "68"
बेशक, आउटपुट "68" है, क्योंकि यही इस संख्या का सटीक प्रदर्शन है। लेकिन, अगर निर्दिष्ट स्थानों की संख्या आवश्यक स्थानों से अधिक है, तो क्या होगा?
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(3)); //आउटपुट "68.0"
इस स्थिति में, toPrecision(3) toFixed(1) से बराबर है, जो "68.0" को आउटपुट करता है।
toFixed()、toExponential() और toPrecision() विधियाँ गणना करती हैं, ताकि सही दशांश संख्या को सही दशांश संख्या के रूप में सही रूप से प्रस्तुत किया जा सके।
सूचना:Boolean ऑब्जेक्ट के तरह, Number ऑब्जेक्ट भी महत्वपूर्ण है, लेकिन इस ऑब्जेक्ट का उपयोग कम करना चाहिए, ताकि संभावित समस्याओं से बचा जा सके। जब संभव हो, चरित्रों के मूल रूप का उपयोग करें।
देखें
Number ऑब्जेक्ट के बारे में अधिक जानकारी के लिए, यहाँ देखें जावास्क्रिप्ट नंबर ऑब्जैक्ट रेफरेंस मैनुअल。
String ऑब्जेक्ट
String ऑब्जेक्ट String मूल टाइप के ऑब्जेक्ट प्रतिनिधित्व है, जो निम्नलिखित तरीके से बनाया जाता है:
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world");
String ऑब्जेक्ट की valueOf() और toString() विधियाँ शब्दकोश के मूल मान को वापस देती है:
alert(oStringObject.valueOf() == oStringObject.toString()); //आउटपुट "true"
यदि यह विधि चलाई जाए, आउटपुट "true" है, जो इसके लिए कहता है कि इन मानों के बीच सचमुच समानता है।
टिप्पणी:String ऑब्जेक्ट ECMAScript में अधिक जटिल संदर्भ टाइप में से एक है। इसी तरह, इस खंड का मुख्य ध्यान सिर्फ String वर्ग की बुनियादी क्षमताओं पर है। अधिक उच्च स्तरीय क्षमताओं के लिए, इस शिक्षण के संबंधित अध्यायों को पढ़ें या देखें जावास्क्रिप्ट स्ट्रिंग ऑब्जैक्ट रेफरेंस मैनुअल。
length विशेषता
String ऑब्जेक्ट कोई विशेषता length रखती है, जो शब्दकोश में चरित्रों की संख्या है:
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world"); alert(oStringObject.length); //आउटपुट "11"
इस उदाहरण में आउटपुट "11" है, अर्थात "hello world" में चरित्रों की संख्या। ध्यान दें कि जैसा कि शब्दकोश द्विपद चरित्र (जो एसीआई चरित्रों से अलग हैं, एसीआई चरित्र केवल एक बाइट लेते हैं), प्रत्येक चरित्र केवल एक चरित्र माना जाता है।
charAt() और charCodeAt() विधियाँ
String ऑब्जेक्ट भी बहुत सी विधियाँ रखता है।
पहले, दोनों विधियाँ charAt() और charCodeAt() शब्दकोश में एकल चरित्र को एक्सेस करती हैं। इन दोनों विधियों के पास एक पारामीटर है, जो संचालित चरित्र का स्थान है।
charAt() विधि निर्दिष्ट स्थान के चरित्र को देती है:
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world"); alert(oStringObject.charAt(1)); //आउटपुट "e"
अक्षरशृंखला "hello world" में, स्थान 1 पर का अक्षर "e" है। "ECMAScript आधारभूत टाइप" चैप्टर में हमने बताया है कि पहला अक्षर का स्थान 0 है, दूसरा अक्षर का स्थान 1 है, इसी तरह आगे जाता है। इसलिए, charAt(1) को बुलाने से "e" मिलता है।
अगर आपको चाहिए कि चार्ज कोड ही मिले नहीं बल्कि चार्ज कोड को चाहिए, तो charCodeAt() तरीका को बुलाया जा सकता है:
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world"); alert(oStringObject.charCodeAt(1)); //आउटपुट "101"
इस उदाहरण में, "101" आउटपुट होता है, जो न्यून अक्षर "e" का चार्ज कोड है।
concat() तरीका
अगला तरीका concat() है, जो एक या अधिक अक्षरशृंखलाओं को String ऑब्जेक्ट के मूल मूल्य के साथ जोड़ता है। इस तरीका के द्वारा वापस दी जाती है String मूल्य, जो मूल String ऑब्जेक्ट को बदले नहीं देती:
var oStringObject = new String("hello "); var sResult = oStringObject.concat("world"); alert(sResult); //आउटपुट "hello world" alert(oStringObject); //आउटपुट "hello "
इस कोड के इस हिस्से में, concat() तरीका "hello world" वापस देता है, जबकि String ऑब्जेक्ट अभी भी "hello " रहता है। इसलिए, सबसे आम रूप से, जोड़ने के लिए जोड़ चिह्न (+) का उपयोग किया जाता है, क्योंकि यह वास्तविक व्यवहार को भावी रूप से स्पष्ट करता है:
var oStringObject = new String("hello "); var sResult = oStringObject + "world"; alert(sResult); //आउटपुट "hello world" alert(oStringObject); //आउटपुट "hello "
indexOf() और lastIndexOf() तरीके
अब तक, हमने अक्षरशृंखला को जोड़ने के तरीकों, अक्षरशृंखला में एकल अक्षरों को पहचानने के तरीकों पर चर्चा की है। लेकिन यदि किसी अक्षरशृंखला में किसी अक्षर के बारे में निश्चित नहीं है कि वह वास्तव में मौजूद है तो कौन-सा तरीका बुलाना चाहिए? इस समय, indexOf() और lastIndexOf() तरीकों को बुलाया जा सकता है。
indexOf() और lastIndexOf() तरीके दोनों स्पष्ट उपसूचक को दूसरे अक्षरशृंखला में के स्थान वापस देते हैं, अगर उपसूचक नहीं मिला तो -1 वापस देते हैं。
इन दोनों तरीकों का अंतर यह है कि indexOf() तरीका अक्षरशृंखला के शुरू से (स्थान 0) शुरू होकर अक्षरशृंखला में खोज करता है, जबकि lastIndexOf() तरीका अक्षरशृंखला के अंत से शुरू होकर उसमें सबसे आखिरी उपसूचक खोजता है। उदाहरण के लिए:
var oStringObject = new String("hello world!"); alert(oStringObject.indexOf("o")); आउटपुट "4" alert(oStringObject.lastIndexOf("o")); आउटपुट "7"
यहाँ, पहली "o" स्ट्रिंग 4 स्थान पर प्रदर्शित होती है, अर्थात "hello" में "o"; अंतिम "o" 7 स्थान पर प्रदर्शित होती है, अर्थात "world" में "o"। यदि स्ट्रिंग में केवल एक "o" स्ट्रिंग है, तो indexOf() और lastIndexOf() विधियों द्वारा वापस प्राप्त होने वाला स्थान समान है।
localeCompare() विधि
अगली विधि localeCompare() है, जो स्ट्रिंग को तालिकबद्ध करती है। इस विधि का एक पैरामीटर है - तुलना के लिए वाली स्ट्रिंग, इसका वापस प्राप्त होने वाला मान निम्नलिखित तीन में से एक है:
- यदि String ऑब्जेक्ट अक्षराक्षर क्रम में पैरामीटर में वाली स्ट्रिंग से पहले है, तो नकारात्मक मान वापस देता है。
- यदि String ऑब्जेक्ट पैरामीटर में वाली स्ट्रिंग से समान है, तो 0 वापस देता है
- यदि String ऑब्जेक्ट अक्षराक्षर क्रम में पैरामीटर में वाली स्ट्रिंग के बाद है, तो सकारात्मक मान वापस देता है。
टिप्पणी:यदि वापस प्राप्त होने वाला मान नकारात्मक है, तो सबसे आम है -1, लेकिन वास्तव में वापस प्राप्त होने वाला मान इस तरीके से निर्धारित होता है। यदि वापस प्राप्त होने वाला मान सकारात्मक है, तो सबसे आम है 1, लेकिन वास्तव में वापस प्राप्त होने वाला मान इस तरीके से निर्धारित होता है。
यहाँ एक उदाहरण दिया गया है:
var oStringObject = new String("yellow"); alert(oStringObject.localeCompare("brick")); // आउटपुट "1" alert(oStringObject.localeCompare("yellow")); // आउटपुट "0" alert(oStringObject.localeCompare("zoo")); // आउटपुट "-1"
इस कोड में, स्ट्रिंग "yellow" 3 तरीके से तुलना की गई है, यथा "brick"、"yellow" और "zoo"। चूंकि अक्षराक्षर क्रम में व्यवस्थित है, इसलिए "yellow" "brick" के बाद है, इसलिए localeCompare() 1 वापस देता है; "yellow" "yellow" से समान है, इसलिए localeCompare() 0 वापस देता है; "zoo" "yellow" के बाद है, इसलिए localeCompare() -1 वापस देता है। एक बार फिर बताया जाए, वापस प्राप्त होने वाला मान इस तरीके से निर्धारित होता है, इसलिए localeCompare() विधि को इस तरीके से बुलाना बेहतर है:
var oStringObject1 = new String("yellow"); var oStringObject2 = new String("brick"); var iResult = oStringObject1.localeCompare(oStringObject2); if(iResult < 0) { alert(oStringObject1 + " comes before " + oStringObject2); } alert(oStringObject1 + " comes after " + oStringObject2); } alert("The two strings are equal"); }
इस संरचना को अपनाकर, इस विधि को सभी कार्यान्वयनों में सही तरीके से चलाने का यकीन हो सकता है।
localeCompare() विधि का अनूठा है, जो इस विधि को चलाने वाले क्षेत्र (locale, जो देश/क्षेत्र और भाषा के लिए भी प्रयोग किया जाता है) के अनुसार इसका काम करने के तरीके को सुनिश्चित करता है। अमेरिका में, अंग्रेजी एकमात्र ECMAScript कार्यान्वयन की मानक भाषा है, localeCompare() वर्णमुद्रा अभिकल्पक है, बड़े अक्षर बड़ी अक्षर के बाद हैं। लेकिन, अन्य क्षेत्रों में स्थिति इस तरह नहीं है।
slice() और substring()
ECMAScript दो विधियाँ प्रदान करता है, जो उपरांत आयाम वाले String मूल्य के लिए, यथा slice() और substring()। इन दोनों विधियों द्वारा वापस दी जाने वाली सबसे अधिक सबसे कम उपरांत आयाम वाले String के उपसूचक हैं, दोनों को एक या दो प्रायाम को स्वीकार करती हैं। पहला प्रायाम उपसूचक जो प्राप्त करना है उसका प्रारंभ स्थान है, दूसरा प्रायाम (यदि इस्तेमाल किया जाता है) उसके समाप्त होने के पूर्व का स्थान है (अर्थात, वापस दी जाने वाली गुणवत्ता में समाप्त स्थान का अक्षर शामिल नहीं होता)। यदि दूसरा प्रायाम छोड़ दिया जाता है, तो समाप्त स्थान को स्ट्रिंग की लंबाई के लिए डिफ़ॉल्ट सेट किया जाता है।
concat() विधि के समान, slice() और substring() विधियाँ भी String ऑब्जेक्ट के स्वयं के मूल्य को नहीं बदलती हैं। वे केवल मूल String मूल्य को वापस देती हैं, String ऑब्जेक्ट को अभिलक्षित नहीं करती।
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world"); alert(oStringObject.slice("3")); //आउटपुट "lo world" alert(oStringObject.substring("3")); //आउटपुट "lo world" alert(oStringObject.slice("3", "7")); //आउटपुट "lo w" alert(oStringObject.substring("3", "7")); //आउटपुट "lo w"
इस उदाहरण में, slice() और substring() का उपयोग एक से एक है, और आउटपुट भी एक ही है। जब केवल पैरामीटर 3 है तो, दोनों विधाएँ "lo world" वापस करती हैं क्योंकि "hello" में दूसरा "l" स्थान 3 पर है। जब "3" और "7" दो पैरामीटर हैं तो, दोनों विधाएँ "lo w" वापस करती है ("world" में "o" स्थान 7 पर है, इसलिए यह नतीजे में शामिल नहीं है)।
दो विधाएँ जो पूरी तरह से एक ही काम करती हैं, तो क्यों दोनों हैं? वास्तव में, इन दोनों विधाएँ पूरी तरह से एक ही नहीं हैं, लेकिन नकारात्मक पैरामीटर के लिए वे पैरामीटर को संभालने के तरीके में थोड़ा अंतर है।
नकारात्मक संख्या पैरामीटर के लिए, slice() विधा पद की लंबाई को पैरामीटर से जोड़ देती है, substring() विधा इसे 0 के रूप में संभालती है (अर्थात् इसे नज़रअंदाज़ करती है)। उदाहरण के लिए:
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world"); alert(oStringObject.slice("-3")); //आउटपुट "rld" alert(oStringObject.substring("-3")); //आउटपुट "hello world" alert(oStringObject.slice("3, -4")); //आउटपुट "lo w" alert(oStringObject.substring("3, -4")); //आउटपुट "hel"
इस तरह से ही देखा जा सकता है कि slice() और substring() विधाओं का मुख्य अंतर क्या है।
जब केवल पैरामीटर -3 है तो, slice() ने "rld" वापस किया, substring() ने "hello world" वापस किया। इसका कारण यह है कि इस वाक्य "hello world" के लिए, slice("-3") को slice("8") में बदल दिया जाएगा, और substring("-3") को substring("0") में बदल दिया जाएगा।
इसी तरह, पैरामीटर 3 और -4 का उपयोग करते हुए, अंतर भी स्पष्ट है। slice() विधि slice(3, 7) में बदल जाएगी, जैसा कि पहले के उदाहरण में देखा गया है, आउटपुट "lo w"। और substring() विधि दो पैरामीटर को substring(3, 0) के रूप में व्याख्या करेगी, जो वास्तव में substring(0, 3) है, क्योंकि substring() हमेशा छोटे संख्या को शुरूआती स्थान के रूप में और बड़े संख्या को समाप्त स्थान के रूप में लेती है। इसलिए substring("3, -4") का परिणाम "hel" है। यहाँ के अंतिम पड़ाके कोड इन विधियों के उपयोग को स्पष्ट करने के लिए है।
toLowerCase()、toLocaleLowerCase()、toUpperCase() और toLocaleUpperCase()
आखिरी विधियाँ आकर्षण-अकर्षण के लिए हैं। 4 विधियाँ आकर्षण-अकर्षण करने के लिए हैं, अर्थात
- toLowerCase()
- toLocaleLowerCase()
- toUpperCase()
- toLocaleUpperCase()
नाम से स्पष्ट है कि उनका उपयोग, पहली दो विधियाँ शब्द को पूर्ण छोटी लिखी रूप में बदलने के लिए उपयोग की जाती हैं, और दूसरी दो विधियाँ शब्द को पूर्ण बड़ी लिखी रूप में बदलने के लिए उपयोग की जाती हैं。
toLowerCase() और toUpperCase() विधियाँ मूली हैं, जो java.lang.String में समान विधियों के आधार पर कार्य करती हैं。
toLocaleLowerCase() और toLocaleUpperCase() विधियाँ विशिष्ट क्षेत्र के आधार पर कार्य करती हैं (localeCompare() विधि के समान). कई क्षेत्रों में, क्षेत्र-विशिष्ट विधियाँ सामान्य विधियों के समान हैं। हालांकि, कुछ भाषाओं (उदाहरण के लिए तुर्की) में Unicode आकर्षण-अकर्षण के लिए विशिष्ट नियम लागू होते हैं, इसलिए सही ट्रांसफॉर्मेशन के लिए क्षेत्र-विशिष्ट विधियाँ उपयोग में लाई जानी चाहिए。
var oStringObject = new String("Hello World"); alert(oStringObject.toLocaleUpperCase()); // आउटपुट "HELLO WORLD" alert(oStringObject.toUpperCase()); // आउटपुट "HELLO WORLD" alert(oStringObject.toLocaleLowerCase()); // आउटपुट "hello world" alert(ओस्ट्रिंगऑब्जैक्ट.toLowerCase()); //आउटपुट 'hello world'
इस कोड में toUpperCase() और toLocaleUpperCase() का आउटपुट 'HELLO WORLD' है, toLowerCase() और toLocaleLowerCase() का आउटपुट 'hello world' है।आमतौर पर, यदि एक भाषा के लिए इसका कोडिंग ज्ञात नहीं है, तो क्षेत्र-विशिष्ट तरीकों का उपयोग सुरक्षित होता है。
सूचना:याद रखें कि String ऑब्जैक्ट की सभी गुणवत्ताएँ और तरीके String असली मूल्य पर लागू किए जा सकते हैं, क्योंकि वे फॉर्स्ट ऑब्जैक्ट हैं।
instanceof ऑपरेटर
typeof ऑपरेटर तरीके का उपयोग करके रेफरेंस टाइप में भंडारित वैल्यू के समय एक समस्या होती है, चाहे उसका उपयोग किस विशेष तरीके का नहीं किया जाए, यह 'ऑब्जैक्ट' बदले 'ट्रू' बदले में बदलता है।ECMAScript ने इस समस्या को सुलझाने के लिए एक अन्य Java ऑपरेटर instanceof शामिल किया है。
instanceof ऑपरेटर तरीका typeof ऑपरेटर तरीके के समान है, यह उपयोग कर रहे ऑब्जैक्ट के तरीके को पहचानने के लिए उपयोग किया जाता है।typeof तरीके से भिन्न, instanceof तरीका डेवलपर को निश्चित करने के लिए आवश्यक है कि ऑब्जैक्ट किस विशेष तरीके का है।उदाहरण के लिए:
वेरियबल ओस्ट्रिंगऑब्जैक्ट = new String("hello world"); alert(ओस्ट्रिंगऑब्जैक्ट instanceof String); //आउटपुट 'ट्रू'
इस कोड का प्रश्न है 'वेरियबल ओस्ट्रिंगऑब्जैक्ट स्ट्रिंग ऑब्जैक्ट के उदाहरण है?' ओस्ट्रिंगऑब्जैक्ट का है, इसलिए परिणाम 'ट्रू' है।इससे परिणाम typeof तरीके की तुलना में उदार नहीं है, लेकिन typeof तरीके के 'ऑब्जैक्ट' बदले 'ट्रू' बदले में instanceof तरीका अभी भी काफी उपयोगी है。
- पिछला पृष्ठ ECMAScript टाइप कनवर्शन
- अगला पृष्ठ एक राशि ऑपरेटर