Получение разных результатов, если я сохраняю результат JSON.parse в переменной [duplicate]

Например, я использовал в консоли Firefox:

[].forEach.call(document.getElementsByTagName('pre'), function(e){ 
   console.log(e);
})
3
задан BarryBones41 14 December 2015 в 22:54
поделиться

1 ответ

Браузер не сохраняет весь объект, когда вы вызываете console.log(), просто ссылку на него. Когда вы проверите его позже, браузер получит текущую версию объекта.

Вы можете протестировать это довольно просто, добавив новый элемент к объекту.

Вызовите это на end:

var newAppData = {
    "2": {
        name: "a",
        age: 443
    }
}

В консоли он будет отображаться как

Object {0: Foo, 1: Foo}
Object {0: Foo, 1: Foo, 2: Foo}

, но когда вы откроете первую запись в журнале, вы увидите все три элемента, поэтому браузер проверяет текущую версию.

Демо: https://jsfiddle.net/n302nsbh/22/

Решение 1

Кому см. текущую версию элемента объекта, прямо ссылайтесь на нее с помощью console.log(fooManager.objects[0]);. Это будет выводиться для вашего скрипта:

Foo {name: "a", age: 2}
Foo {name: "a", age: 443}

Демонстрация: https://jsfiddle.net/n302nsbh / 23 /

Решение 2

Просто нашел другое приятное решение в https://stackoverflow.com/a/7389177/1682509

Используйте console.log(JSON.parse(JSON.stringify(fooManager.objects))); для получения моментального снимка для просмотра.

Демо: https://jsfiddle.net/n302nsbh/24/

4
ответ дан Community 23 August 2018 в 18:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: