ऑब्जेक्ट डंप जावास्क्रिप्ट


89

जावास्क्रिप्ट ऑब्जेक्ट के लिए स्क्रिप्ट डिबगर में ऑब्जेक्ट मैप डंपिंग करने के लिए कोई 3 पार्टी ऐड-ऑन / एप्लिकेशन या कुछ तरीका है?

यहां स्थिति है ... मेरे पास दो बार बुलाया जाने वाला एक तरीका है, और हर बार के दौरान कुछ अलग होता है। मुझे यकीन नहीं है कि क्या अलग है, लेकिन कुछ है। इसलिए, यदि मैं विंडो के सभी गुणों (या कम से कम window.document) को एक पाठ संपादक में डंप कर सकता हूं, तो मैं एक साधारण फ़ाइल अंतर वाली दो कॉलों के बीच स्थिति की तुलना कर सकता हूं। विचार?


जवाबों:


61

फायरबग +console.log(myObjectInstance)


4
... और फिर फ़ायरबग कंसोल और मानक जावास्क्रिप्ट कंसोल में देखें । :-)
— टावी

3
IE में एक कंसोल है, लेकिन ऑब्जेक्ट रिटर्न लॉगिंग है [object Object]। बहुत उपयोगी नहीं है
— स्टीव रॉबिंस

5
@SteveRobbins, जो आजकल वेब अनुप्रयोगों को विकसित करने के लिए IE का उपयोग करता है? निजी तौर पर इंटरनेट एक्सप्लोरर के लिए अब तक मैंने केवल एक ही उपयोग किया है, एक बार अपने विंडोज ऑपरेटिंग सिस्टम को फिर से इंस्टॉल करने के बाद एक वास्तविक वेब ब्राउज़र डाउनलोड करना। वैसे यह एकमात्र समय है जब मैं सॉफ्टवेयर की इस शांति को लॉन्च करता हूं।
— डारिन दिमित्रोव

8
कोई भी डेवलपर जो प्रमुख ब्राउज़रों का समर्थन करता है। यदि समस्या केवल IE में मौजूद है, तो इसे केवल IE में परीक्षण किया जा सकता है, इसलिए आपको ब्राउज़र का उपयोग करना होगा।
— स्टीव रॉबिंस

2
और अगर आप नोड.जेएस और एक टर्मिनल का उपयोग कर रहे हैं .. कोई फ़ायरबग नहीं है ??
— चेरुविम

134
console.log("my object: %o", myObj)

अन्यथा आप कभी-कभी प्रदर्शित होने वाले स्ट्रिंग प्रतिनिधित्व के साथ समाप्त होंगे:

[object Object]

या कुछ इस तरह।


3
क्रोम और फ़ायरफ़ॉक्स के लिए बस [ऑब्जेक्ट ऑब्जेक्ट] प्रिंट करता है। <श्रग>
— स्लैशडॉटिर

1
@slashdottir यह क्रोम और एफएफ में बिल्कुल काम करता है। मैं इसका इस्तेमाल क्रोम में कम से कम हर हफ्ते और कभी-कभार एफएफ में करता हूं।
— टिम

1
@ समय: आप सही हैं, यह काम करता है। कृपया मुझे क्षमा करें। उपयोगकर्ता इरेट
— slashdottir

कैसे पृथ्वी पर यह चयनित उत्तर नहीं है? मेरे लिए भाग्यशाली है कि यह मेरे जन्मदिन पर 4 साल पहले उत्तर दिया गया था, जब मैं जेएस का उपयोग नहीं कर रहा था।
— जॉय कार्सन

2
उल्का (सर्वर-साइड) में यह प्रिंट करता है my object: %o। बहुत मददगार नहीं :)
— एरडल जी।

45
function mydump(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;

    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";

    if(typeof(arr) == 'object') {  
        for(var item in arr) {
            var value = arr[item];

            if(typeof(value) == 'object') { 
                dumped_text += level_padding + "'" + item + "' ...\n";
                dumped_text += mydump(value,level+1);
            } else {
                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
            }
        }
    } else { 
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}

4
फ़ंक्शन कोड को बदलने के साथ अपने कोड को अपडेट करें, जैसा कि रिकर्सन कॉल में, इसे "डंप" कहते समय "डंप" कहा जाता है
— विकास

7
कॉपी और पेस्ट करें: Binnyva.blogspot.com/2005/10/…
— utopianheaven

1
यह क्रोम और फ़ायरफ़ॉक्स को "बहुत अधिक पुनरावृत्ति" के साथ मारता है जब एक jquery वस्तु की जांच करने के लिए उपयोग किया जाता है
— slashdottir

@slashdottir को ठीक करना आसान है, जाँच करकेif (level > 10) return level_padding + '<< too deep >>';
— जॉन

"बहुत अधिक पुनरावृत्ति" परिपत्र संदर्भ (जब किसी ऑब्जेक्ट का चाइल्ड पैरामीटर अपने मूल ऑब्जेक्ट का संदर्भ देता है) के कारण होता है। वर्तमान मूल्य के सभी माता-पिता को याद करके हल किया जा सकता है और यदि वर्तमान मूल्य माता-पिता में से एक से मेल खाता है, तो आगे खुदाई करना बंद करें।
— एलेक्स वेलिकिए

42

यदि आप क्रोम, फ़ायरफ़ॉक्स या IE10 + पर हैं, तो कंसोल और उपयोग का विस्तार क्यों न करें

(function() {
    console.dump = function(object) {
        if (window.JSON && window.JSON.stringify)
            console.log(JSON.stringify(object));
        else
            console.log(object);
    };
})();

संक्षिप्त, क्रॉस-ब्राउज़र समाधान के लिए।


मैं यह पसंद है। विशेष रूप से ब्राउज़र के लिए जो ऑब्जेक्ट डंपिंग का समर्थन नहीं करता है।
— Aley

और हो सकता है कि "और कंसोल.लॉग (ऑब्जेक्ट);" के रूप में एक कस्टम traversal समारोह के लिए एक कॉल के साथ stackoverflow.com/a/3011557/2236012 उपरोक्त; ...;)
— CB

@CB "बहुत अधिक पुनरावृत्ति" और एक जमे हुए ब्राउज़र है यही मुझे फ़ायरफ़ॉक्स और क्रोम में मिलता है।
— स्लैशडॉटिर

3
JSON.stringify चक्रीय संरचनाओं को क्रमबद्ध नहीं कर सकता है। यह सभी वस्तुओं के लिए काम नहीं करेगा।
— ग्रेज़गोरज़ लुसीस्वो

24

महज प्रयोग करें:

console.dir(object);

आपको एक अच्छा क्लिक करने योग्य वस्तु प्रतिनिधित्व मिलेगा। क्रोम और फ़ायरफ़ॉक्स में काम करता है


1
क्रोम और फ़ायरफ़ॉक्स दे [वस्तु वस्तु]
— slashdottir

आप इसे कंसोल (हिट F12) में परीक्षण कर सकते हैं console.dir({bar:"foo"}); क्या आपकी वस्तु स्ट्रीडिंग विधि को अधिलेखित करती है?
— मॉन्स droid

लगता है कम से कम कंसोल में काम कर रहा है। शायद मेरे द्वारा userr। धन्यवाद
— slashdottir

इस तरह की एक प्यारी विशेषता
— टॉमलोन

12

क्रोम / क्रोमियम के लिए

console.log(myObj)

या इसके बराबर है

console.debug(myObj)


4

उपयोग करना console.log(object)आपकी वस्तु को जावास्क्रिप्ट कंसोल में फेंक देगा, लेकिन हमेशा वह नहीं होता जो आप चाहते हैं। का उपयोग करके JSON.stringify(object)अधिकांश सामान को एक चर में संग्रहीत किया जाएगा, उदाहरण के लिए इसे एक textarea इनपुट पर भेजने और सामग्री को सर्वर पर वापस भेजने के लिए।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.