2012-10-31 38 views
5

मैं ऐसे this one लाइन 7 पर के रूप में कई MDN सरणी विधि की परतें में देखा, कि वे निम्न सिंटैक्स का उपयोग:ऑब्जेक्ट (यह) क्या करता है?

var t = Object(this); 

कहाँ this एक सरणी है। न केवल यह मेरे वैधकर्ता में संकेत नहीं देता है, मैं यह भी कहता हूं कि यह क्या करता है।

क्या कोई प्रकाश ला सकता है?

+0

क्या सी ++ में कॉपी कन्स्ट्रक्टर की तरह कुछ नहीं है? –

+2

के संभावित आधिकारिक कार्यान्वयन में "var t = ऑब्जेक्ट (यह)" का बिंदु क्या है? [Http://stackoverflow.com/questions/6498487/whats-the-point-of-var-t -बॉजेक्टथिस-इन-द-आधिकारिक-कार्यान्वयन-के-के लिए) – finnw

उत्तर

3

जहां तक ​​मैं कह सकता हूं, उसमें केवल इसका उपयोग उस मामले को कवर करना है जब आप एक स्ट्रिंग अक्षर Array.prototype.indexOf पर लेते हैं। आप इसे हटा दें और में आपको कोई त्रुटि मिलती एक स्ट्रिंग पार कर लेते हैं:

TypeError: Cannot use 'in' operator to search for '0' in string

हालांकि, स्ट्रिंग शाब्दिक कास्टिंग String की आवृत्ति से, आप स्ट्रिंग के हर किरदार के लिए एक संख्यात्मक संपत्ति के साथ एक वस्तु के साथ खत्म और तब से यह एक सामान्य वस्तु है, तो आप उस पर in ऑपरेटर का उपयोग कर सकते हैं और विधि स्ट्रिंग में चरित्र के सूचकांक वापस आ जाएगी:

Array.prototype.indexOf.call("hello", "e"); // Returns 1 

यहाँ an example with the cast to Object है, और यहाँ an example without it है।


अधिक सामान्य मामलों में, Object निर्माता के लिए कुछ भी गुजर एक वस्तु को उस चीज़ को परिवर्तित करने का प्रयास करेंगे। तो आप इसे एक स्ट्रिंग शाब्दिक पास कर सकते हैं और String का उदाहरण प्राप्त कर सकते हैं, या इसे एक संख्यात्मक शाब्दिक पास कर सकते हैं और Number का उदाहरण प्राप्त कर सकते हैं।

+0

यह किसी भी बुलियन, संख्या, 'शून्य' या 'अपरिभाषित' के लिए भी काम नहीं करता - मूल रूप से प्रत्येक प्राचीन मूल्य। – Bergi

+0

@ बर्गि - मुझे पूरा यकीन नहीं है कि उस कोड का कारण क्या था ... यह पॉलीफिल में नहीं है [वर्तमान में एमडीएन पर] [https://developer.mozilla.org/en-US/docs/Web/JavaScript/संदर्भ/Global_Objects/सरणी/indexOf # polyfill)। मैं इस जवाब के लिए इसे खोजना याद रखता हूं लेकिन यह स्पष्ट रूप से कुछ समय पहले था। –

+0

हाँ, [एमडीएन एक विकी है] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf$history?limit=all)। – Bergi