В Chrome объект console
определяет два метода, которые, похоже, делают одно и то же:
console.log(...)
console.dir(...)
Я читал где-то в сети, что dir
берет копию объекта перед его регистрацией, тогда как log
просто передает ссылку на консоль, а это означает, что к тому моменту, когда вы будете проверять объект, который вы зарегистрировали, он может иметь изменилось. Однако некоторые предварительные испытания показывают, что нет никакой разницы и что они оба страдают от потенциального отображения объектов в разных состояниях, чем при регистрации.
Попробуйте в консоли Chrome (Ctrl + Shift + J), чтобы увидеть, что я имею в виду:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
Теперь разверните [Object]
под оператором журнала и обратите внимание, что он показывает foo
со значением 2. То же самое верно, если вы повторите эксперимент, используя dir
вместо log
.
Мой вопрос: почему эти две, казалось бы, идентичные функции существуют на console
?