2011-11-27 19 views
6

के लिए विरोधाभासी मान दिखा रहा है मुझे लगता है कि मैं पागल हो सकता हूं।console.log() एक ही ऑब्जेक्ट प्रॉपर्टी

मैं किसी ऑब्जेक्ट की स्थिति देखने के लिए console.log() का उपयोग करता हूं और फिर अगली पंक्ति पर एक ही ऑब्जेक्ट की किसी विशेष प्रॉपर्टी पर console.log() करता है और प्रत्येक के लिए अलग-अलग मान प्राप्त करता है।

कोड मैं का उपयोग कर रहा है:

console.log(this.pictures.Items[pic].val); 

for(var i in this.pictures.Items[pic].val) { 
    console.log("property: %s, value: %s", i, this.pictures.Items[pic].val[i]); 
} 

और फ़ायरबग आउटपुट:

Picture { isLoaded=true, isSelected=false, img_src="imgs/image1.jpg", more...} 

property: isLoaded, value: false 
...more properties 

के रूप में आप देख सकते हैं, 'isLoaded' है सच है जब वस्तु ही प्रवेश करने लेकिन झूठी जब प्रवेश करने संपत्ति।

मैंने ऑब्जेक्ट को फिर से मामले में फिर से लॉग करने का प्रयास किया है, और यह फिर से सच है।

क्या किसी को पता है कि यहां क्या हो रहा है?

धन्यवाद

रिच

+0

http://jsfiddle.net/xmvUR/ ... मुझे आपके कोड का वास्तविक स्थान पता नहीं है। लेकिन मुझे यकीन है कि जावास्क्रिप्ट में ऐसी कोई भी बग नहीं है .. –

उत्तर

2

मैं अगर यह क्या आप या नहीं करने के लिए हो रहा है पूरी तरह से यकीन नहीं है, लेकिन console.log() कुछ ब्राउज़रों में कुछ मुद्दों पर जहां एक मूल्य पर एक console.log() कर या का उपयोग कर रहा है एक इंडेक्स वेरिएबल जो बदल रहा है या किसी सरणी में पुनरावृत्त किया जा रहा है वह हमेशा ठीक से काम नहीं करता है।

मेरा अनुमान है कि प्रक्रिया प्रक्रियाओं और संभवतः लॉगिंग अभिव्यक्ति के वास्तविक मूल्यांकन में देरी होने के साथ कुछ करने के लिए इसका कोई संबंध नहीं है जब तक कि वास्तविक वस्तु या अनुक्रमणिका का उपयोग या संदर्भित नहीं किया जाता है। मैंने क्रोम में यह समस्या निश्चित रूप से देखी है - फ़ायरफ़ॉक्स के बारे में नहीं पता।

आपको अपनी अंतिम स्ट्रिंग बनाने के लिए स्ट्रिंग गणित का उपयोग करके इस विशेष समस्या के आसपास काम करने में सक्षम होना चाहिए। यदि केवल अंतिम स्ट्रिंग console.log() पर पास की जाती है जहां सब कुछ पूरी तरह से मूल्यांकन किया जाता है, तो यह समस्या आउटपुट को प्रभावित नहीं करेगी।

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