簡體   English   中英

如何在Javascript控制台中獲取對象的全名和“路徑”?

[英]How to get an object's full name and “path” in a Javascript console?

假設我有一個大型SPA,我可以查看其來源。 現在在那里有一個對象,其中包含我想要查看和/或更改的數據以用於調試目的。

我可以在代碼中放置一個console.log(myObject) ,它會在控制台中顯示,這很好......但是如何在當前窗口中輸出對象的完整路徑全名 ,這樣我才能打開一個JS控制台並輸入例如:

window.myApp.something.anothersomthing[12].myObject

然后得到我的對象? 我所能找到的就是如何打印這種類型,但這並沒有幫助。 有任何想法嗎?

這是一個非常天真的實現,它允許您在對象圖中搜索對象並打印出遇到此對象的路徑。

有一些警告:

  1. 正如您在代碼段中看到的那樣,我將window.myApp作為上下文傳遞以啟動搜索。 如果您傳入window ,則會遇到許多錯誤。
    例如,在Chrome中, window.clientInformation.plugins[0] === window.clientInformation.plugins[0]計算結果為false,這使得無法跟蹤已訪問過的對象。

  2. 有許多實現細節可能導致下面的腳本行為不當(getter,代理,生成器......)。

 function search(object, context) { let found = []; let visited = []; let visit = (object, reference, path) => { if (object === reference) { found.push(path); } if (!visited.includes(reference)) { visited.push(reference); if (Array.isArray(reference)) { for (let i = 0; i < reference.length; i++) { visit(object, reference[i], path + '[' + i + ']'); } } else if (reference === Object(reference)) { // test for object for (let key in reference) { visit(object, reference[key], path + '.' + key); } } } } visit(object, eval(context), context); return found; } // example let myObject = {}; let myApp = { something: { anotherSomething: [null, null, null, null, null, null, null, null, null, null, null, null, { myObject: myObject }] } }; window.myApp = myApp; console.log(search(myObject, 'window.myApp')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM