在 window 中将循环结构转换为 JSON
Converting circular structure to JSON in window
我试图在控制台中显示 window 的所有元素。我试过 console.log(window)
但它没有自动扩展。
此线程 Is there a way to auto expand objects in Chrome Dev Tools? 建议我使用 JSON.stringify
但我收到以下错误:
这是一件不太可能做的事情,我认为您无法完全模仿您在控制台中看到的所有扩展内容 - 原因之一是 "circular structure" 的 window。不过,在某种程度上可以通过克隆 window 对象并进行一些调整来完成 - this 可能是一个很好的起点。
var maxDepth = 10;
function cloneObject(obj,depth) {
if (!depth) depth = 1;
var clone = {};
for (var i in obj) {
if (typeof(obj[i])=="object" && obj[i] != null) {
try {
if (obj[i].wowImCloned) clone[i] = '[I\'ve seen you somewhere..]';
else if (depth >= maxDepth) clone[i] = '[I\'m not going deeper]'
else {
obj[i].wowImCloned = true;
clone[i] = cloneObject(obj[i],depth+1);
}
} catch(err) clone[i] = err.message;
}
else if (typeof(obj[i])=="function") clone[i] = obj[i].toString()
else clone[i] = obj[i];
}
return clone;
}
var clone = cloneObject(window)
//console.log(JSON.stringify(clone))
我试图在控制台中显示 window 的所有元素。我试过 console.log(window)
但它没有自动扩展。
此线程 Is there a way to auto expand objects in Chrome Dev Tools? 建议我使用 JSON.stringify
但我收到以下错误:
这是一件不太可能做的事情,我认为您无法完全模仿您在控制台中看到的所有扩展内容 - 原因之一是 "circular structure" 的 window。不过,在某种程度上可以通过克隆 window 对象并进行一些调整来完成 - this 可能是一个很好的起点。
var maxDepth = 10;
function cloneObject(obj,depth) {
if (!depth) depth = 1;
var clone = {};
for (var i in obj) {
if (typeof(obj[i])=="object" && obj[i] != null) {
try {
if (obj[i].wowImCloned) clone[i] = '[I\'ve seen you somewhere..]';
else if (depth >= maxDepth) clone[i] = '[I\'m not going deeper]'
else {
obj[i].wowImCloned = true;
clone[i] = cloneObject(obj[i],depth+1);
}
} catch(err) clone[i] = err.message;
}
else if (typeof(obj[i])=="function") clone[i] = obj[i].toString()
else clone[i] = obj[i];
}
return clone;
}
var clone = cloneObject(window)
//console.log(JSON.stringify(clone))