javascript كود طباعة محتوى كائن جافا سكريبت؟




كود الطباعة في الجافا سكريبت (12)

وبصرف النظر عن استخدام مصحح الأخطاء ، يمكنك أيضًا الوصول إلى جميع عناصر الكائن باستخدام حلقة foreach . يجب أن alert() الدالة printObject التالية alert() الكائن الذي يعرض كافة الخصائص والقيم الخاصة بها.

function printObject(o) {
  var out = '';
  for (var p in o) {
    out += p + ': ' + o[p] + '\n';
  }
  alert(out);
}

// now test it:
var myObject = {'something': 1, 'other thing': 2};
printObject(myObject);

يفضل استخدام أداة فحص DOM لأنه يسمح لك بالحفر تحت الخصائص التي هي كائنات بحد ذاتها. يحتوي Firefox على FireBug ولكن جميع المتصفحات الرئيسية الأخرى (IE و Chrome و Safari) تحتوي أيضًا على أدوات تصحيح الأخطاء المضمنة التي يجب التحقق منها.

هذا السؤال لديه بالفعل إجابة هنا:

عادة إذا استخدمنا alert(object); ستظهر كـ [object Object] . كيفية طباعة جميع معلمات المحتوى لكائن في JavaScript؟


سيعطيك ذلك إخراجًا رائعًا للغاية باستخدام كائن JSON بمسافة بادئة:

alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));

تقوم الوسيطة الثانية بتغيير محتويات السلسلة قبل إعادتها. تحدد الوسيطة الثالثة عدد المسافات لاستخدامها كمسافة بيضاء للقراءة.



استخدم dir (الكائن). أو يمكنك دائمًا تنزيل FireBug (مفيد حقًا).


وظيفة بسيطة لتنبيه محتويات كائن أو مصفوفة.
استدعاء هذه الوظيفة مع صفيف أو سلسلة أو كائن تنبيهات المحتويات.

وظيفة

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

استعمال

var data = [1, 2, 3, 4];
print_r(data);

جافا سكريبت للجميع!

String.prototype.repeat = function(num) {
    if (num < 0) {
        return '';
    } else {
        return new Array(num + 1).join(this);
    }
};

function is_defined(x) {
    return typeof x !== 'undefined';
}

function is_object(x) {
    return Object.prototype.toString.call(x) === "[object Object]";
}

function is_array(x) {
    return Object.prototype.toString.call(x) === "[object Array]";
}

/**
 * Main.
 */
function xlog(v, label) {
    var tab = 0;

    var rt = function() {
        return '    '.repeat(tab);
    };

    // Log Fn
    var lg = function(x) {
        // Limit
        if (tab > 10) return '[...]';
        var r = '';
        if (!is_defined(x)) {
            r = '[VAR: UNDEFINED]';
        } else if (x === '') {
            r = '[VAR: EMPTY STRING]';
        } else if (is_array(x)) {
            r = '[\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + ']';
        } else if (is_object(x)) {
            r = '{\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + '}';
        } else {
            r = x;
        }
        return r;
    };

    // Space
    document.write('\n\n');

    // Log
    document.write('< ' + (is_defined(label) ? (label + ' ') : '') + Object.prototype.toString.call(v) + ' >\n' + lg(v));
};



// Demo //

var o = {
    'aaa' : 123,
    'bbb' : 'zzzz',
    'o' : {
        'obj1' : 'val1',
        'obj2' : 'val2',
        'obj3' : [1, 3, 5, 6],
        'obj4' : {
            'a' : 'aaaa',
            'b' : null
        }
    },
    'a' : [ 'asd', 123, false, true ],
    'func' : function() {
        alert('test');
    },
    'fff' : false,
    't' : true,
    'nnn' : null
};

xlog(o, 'Object'); // With label
xlog(o); // Without label

xlog(['asd', 'bbb', 123, true], 'ARRAY Title!');

var no_definido;
xlog(no_definido, 'Undefined!');

xlog(true);

xlog('', 'Empty String');

إذا كنت تريد فقط الحصول على تمثيل سلسلة لكائن ، فيمكنك استخدام وظيفة JSON.stringify ، باستخدام مكتبة JSON .


إذا كنت تستخدم Firefox ، alert(object.toSource()) كافياً لأغراض التصحيح البسيطة.


طباعة محتوى الكائن الذي يمكنك استخدامه

console.log(obj_str);

يمكنك رؤية النتيجة في وحدة التحكم مثل أدناه.

Object {description: "test"} 

بالنسبة إلى وحدة التحكم المفتوحة ، اضغط F12 في متصفح chrome ، ستجد علامة تبويب وحدة التحكم في وضع التصحيح.


هل يمكن أن تستخدم العقدة util.inspect(object) لطباعة هيكل الكائن.

من المفيد بشكل خاص عندما يكون جسمك له تبعيات دائرية على سبيل المثال

$ node

var obj = {
   "name" : "John",
   "surname" : "Doe"
}
obj.self_ref = obj;

util = require("util");

var obj_str = util.inspect(obj);
console.log(obj_str);
// prints { name: 'John', surname: 'Doe', self_ref: [Circular] }

هذه الحالة JSON.stringify تطرح استثناء: TypeError: Converting circular structure to JSON


واجهت مشكلة مماثلة ، والسبب في ذلك هو أنني الاستفادة من اياكس لإحضار البيانات. في هذه الحالة كنت قد قدمت اثنين من دعوة اياكس غير متزامن. في واحد أنا فقط إرجاع رسالة السلسلة وتظهر في التنبيه. في مكالمة ajax الثانية أحضر arraylist في صيغة json ويفكّر في js. لذلك استخدم طلبي الثاني لمعالجة أولاً وكنت أتلقى التنبيه من الكائن.

لذلك فقط تحقق. 1. يجب أن يحتوي التنبيه على سلسلة. 2. إذا حصلت على arrayList أو أي كائن آخر فك ترميزه.

أتمنى لك كل خير!


يجب مراعاة استخدام FireBug لتصحيح أخطاء جافا سكريبت. سوف يسمح لك بفحص كل المتغيرات الخاصة بك بشكل تفاعلي ، وحتى من خلال الوظائف.





object