2017-07-22 8 views
6

मेरे पास निम्न कोड है।यहां वैश्विक क्या चल रहा है [{a}] = 7

a=7 
global[{a}]=7 
global[{a}] // returns 7 

b[{a}]=7 
b[{a}] // returns undefined 

मैं ईमानदारी से पता नहीं क्या हो रहा है, यह एक संपत्ति के रूप में एक वस्तु के साथ एक वस्तु की तरह लगता है है, लेकिन फिर मुझे नहीं क्यों दूसरे उदाहरण अनिर्धारित रहता है।

+0

क्या आप इस पर विस्तार कर सकते हैं? वैश्विक क्या है? क्या यह एक वस्तु या कुछ है .. क्या यह कहीं घोषित किया गया है? –

+0

सुनिश्चित करें, ब्रोवर में चलते समय 'ग्लोबल'' विंडो 'जैसा ही है। यह एक वस्तु है। वैश्विक एक। – Leathan

+0

'बी' क्या है? 'बी [{ए}] 'एक संदर्भ त्रुटि फेंकता है क्योंकि इसे घोषित नहीं किया गया है –

उत्तर

3

तो यहाँ पर पहुँचा कर मैं क्या लगता है कि है हो रहा।

जैसा कि आपने पहले उल्लेख किया था, वैश्विक window ऑब्जेक्ट जैसा ही है।

इसलिए, जब आप कर रहे हैं,

global[{a}] = 7;

यह समान है global["[object Object]"] = 7 को

तो फिर तुम जवाब :: global[{}]7 के रूप में मिल जाएगा।

अब

, इस

b[{a}]=7 
b[{a}] // returns undefined 

आप घोषणा नहीं की b वस्तु है यही कारण है कि आप अपरिभाषित के रूप में इस सवाल का जवाब मिल रहा है के रूप में के लिए।

यदि आप निम्नलिखित करते हैं, तो परिणाम समान होगा;

b = {}; 
b[{a}]=7; 
b[{a}] // returns 7 
+0

पर क्या चल रहा था यह बताने के लिए धन्यवाद हाँ अब !!!! बी ["[ऑब्जेक्ट ऑब्जेक्ट]"] '7 अपरिभाषित !! genious के रूप में 7 है। – Leathan

+0

यदि आप' बी परिभाषित नहीं करते हैं 'और उस पर कुछ संपत्ति तक पहुंचने का प्रयास करें, आपको एक त्रुटि नहीं मिलेगी' अपरिभाषित ' – marzelin

+0

यदि आप प्रतिलिपि में हैं तो नहीं। – Leathan

2

जब आप ब्रैकेट नोटेशन का उपयोग करके कुछ एक्सेस करते हैं, जो भी आप ब्रैकेट में डालते हैं उसे स्ट्रिंग में परिवर्तित कर दिया जाता है। किसी भी वस्तु स्ट्रिंग के लिए रूपांतरण के बाद रिटर्न [object Object]

जब आप global[{a}] यह global["[object Object]"] में बदला जाएगा और संग्रहीत किया जाता है/कि संपत्ति नाम

a = 7 
 
b = {} 
 

 
b[{a}] = 7 
 
console.log(b[{ a }]) // returns 7 
 
console.log(b["[object Object]"]) // returns 7

+0

इसलिए 'बी ["[ऑब्जेक्ट ऑब्जेक्ट]"] '7 होना चाहिए? .. वहां क्या हो रहा था, यह बताने के लिए बहुत कुछ है, अभी भी <- – Leathan

+0

@Leathan के बारे में कुछ उलझन में है 7 यह है कि https://jsfiddle.net/a12umys4/ – marzelin

+0

प्रतिकृति मोड में im होना चाहिए। मुझे अपरिभाषित हो रहा है :( – Leathan

संबंधित मुद्दे