Почему функция копирования в буфер обмена консоли разработчика Chrome иногда возвращает значение объекта toString?

Известно, что copy — это специальная функция, доступная в консоли разработчика Chrome и Firefox (и, возможно, других браузеров) для копирования объекта в буфер обмена. [1] [2]

Так почему же, когда я копирую какой-то очень сложный объект в хроме для отладки в текстовом редакторе, его части возвращаются к вызову его функции toString, что приводит к «[Object object]», когда ни один из них не указан?


person Jonathan Gawrych    schedule 05.12.2016    source источник


Ответы (1)


Эта проблема возникает, когда объект содержит циклическую ссылку. Например:

var foo = {};
foo.bar = foo;
copy(foo);

Chrome (v54) заменяет объект его строковым значением. В Firefox (v47), если объект имеет циклические ссылки, ошибка /* TypeError: cyclic object value */ вместо этого копируется в буфер обмена.

person Jonathan Gawrych    schedule 05.12.2016