为什么 chrome 的开发者控制台复制到剪贴板功能有时 return 对象的 toString 值?

Why does chrome's developer console copy-to-clipboard function return the object's toString value sometimes?

据了解,copy 是 Chrome 和 Firefox(以及可能的其他浏览器)的开发人员控制台中的一项特殊功能,用于将对象复制到剪贴板。 [1][2]

那么为什么当我在 chrome 中复制一些高度复杂的对象以在我的文本编辑器中进行调试时,它的一部分恢复为调用它的 toString 函数,导致“[Object object ]" 当指定 none 时?

当对象包含 circular reference 时会出现此问题。例如:

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

Chrome (v54) 用字符串值替换对象。在 Firefox (v47) 中,如果对象有循环引用,错误 /* TypeError: cyclic object value */ 将被复制到剪贴板。