Dumpování objektů stejně jako hodnot. rubrika: Programování: JavaScript

3 Andreaw Fean
položil/-a 22.9.2015

Podívejte se na tento kód:

var arr = ["pes", "kočka", "zvíře"];
console.log(arr, arr.length); // vypíše [], 3
arr.length = 0;
console.log(arr, arr.length); // vypíše [], 0

Když použiju console.log(arr, arr.length) tak mi to vypíše prázdné pole, a jako počet položek 3.
Vysvětluji si to tím, že na ten objekt arr se předává jen reference, a když se vykresluje, tak se mezitím změní, a do vývojářské konzole se vypíše až konečná podoba objektu.

To mi moc nevyhovuje. Nevíte, jak jednoduše vypsat objekt do konzole ve stavu, v jakém je v daném okamžiku?

Děje se mi to svorně ve Firefoxu i v Opeře, takže očekávám, že to bude něco principielnějšího.

EDIT:
Sorry, chová se tak jen Opera. Ale, když udělám zanořené objekty, tak pak to zlobí ve všech třech:

<!DOCTYPE html>
<html>
<head>
<title>TinyMCE - Basic example</title>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.4.js"></script>
<script type="text/javascript">
    $(function() {
        var arr = ["pes", "kočka", "zvíře"],
            obj = {a: "pes", b:"kočka", c:"zvíře", d: arr};
        console.log(arr, arr.length); // ["pes", "kočka", "zvíře"], 3
        console.log(obj); // {a: "pes", b:"kočka", c:"zvíře", d: []}
        arr.length = 0;
        console.log(arr);
        console.log(obj);
    });
</script>
 
 
</head>
<body id="tryit">
<form method="post" id="ed">
    <textarea name="content">Lorem ipsum doler ist.</textarea>
</form>
</body>

Komentáře

  • ondrej.zara : Ve Firefoxu mi korektně funguje i tato varianta se zanořenými objekty. Zejména tedy jako druhý console.log vidím čtvrtou položku pole o třech prvcích. 23.9.2015
odkaz
13 Honza Břešťan
odpověděl/-a 22.9.2015

Na zanorene objekty se da pouzit JSON.stringify().

var arr = ["pes", "kočka", "zvíře"],
    obj = {a: "pes", b:"kočka", c:"zvíře", d: arr};
 
console.log(obj);
 
// Vystup:
// Object { a: "pes", b: "kočka", c: "zvíře", d: Array[3] }
 
console.log(JSON.stringify(obj));
 
// Vystup:
// {"a":"pes","b":"kočka","c":"zvíře","d":["pes","kočka","zvíře"]}
 
console.log(JSON.stringify(obj, null, 4));
 
// Vystup:
// {
//     "a": "pes",
//     "b": "kočka",
//     "c": "zvíře",
//     "d": [
//         "pes",
//         "kočka",
//         "zvíře"
//     ]
// }

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.