在Firebug中,您可以將DOM選項卡的輸出設置爲僅顯示用戶定義的功能和屬性。這對於檢查是否有對象轉義到全局名稱空間很有幫助。 Chrome中是否有相同的內容?是否可以在Google Chrome控制檯中只顯示用戶定義的功能和屬性?
3
A
回答
0
這裏有一個非常近似:
控制檯版本:
var current;
for(current in window)
{
/* If the property is not null or undefined */
if (!!window[current])
{
/* If the constructor is the Function object */
if (/Function/.test(String(window[current].constructor)))
{
/* Print to the console */
console.log(current)
}
}
}
小書籤版本:
javascript:void(function(){for(_ in window) { if (!!window[_]) { if (/Function/.test(String(window[_].constructor))) { console.log(_) } } }}())
通用版本:
function getUDFs()
{
var current;
/* Use current instead of _ to avoid creating an iterator global variable */
for(current in arguments[0])
{
/* If the property is not null or undefined */
if (!!arguments[0][current])
{
/* If the constructor is the Function object */
if (/Function/.test(String(arguments[0][current].constructor)))
{
/* Print to the console */
console.log(current)
}
}
}
}
遞歸版本:
function getUDFs()
{
var current;
/* Use current instead of _ to avoid creating an iterator global variable */
for(current in arguments[0])
{
getUDFs.id = arguments[1] + " => ";
/* If the property is not null or undefined */
if (!!arguments[0][current])
{
/* If the constructor is the Function object */
if (/Function/.test(String(arguments[0][current].constructor)))
{
/* Print to the console */
console.log(getUDFs.id + current)
}
/* Check object properties */
if (/Object/.test(String(arguments[0][current].constructor)))
{
getUDFs(arguments[0][current], getUDFs.id + current)
}
/* Check prototype properties, but skip constructor prototypes */
if (!!arguments[0][current] && arguments[0][current].hasOwnProperty("prototype") && arguments[0][current] !== arguments[0]["constructor"])
{
getUDFs(arguments[0][current]["prototype"], getUDFs.id + current + " => prototype")
}
}
}
}
getUDFs(jQuery,"jQuery")
遞歸版本與存儲:
function getUDFs()
{
var current;
/* Use current instead of _ to avoid creating an iterator global variable */
for(current in arguments[0])
{
getUDFs.id = arguments[1] + " => ";
/* If the property is not null or undefined */
if (!!arguments[0][current])
{
/* If the constructor is the Function object */
if (/Function/.test(String(arguments[0][current].constructor)))
{
/* Store in an array */
if (getUDFs.hasOwnProperty("data"))
{
getUDFs.data.push(getUDFs.id + current)
}
else
{
getUDFs.data = []
}
}
if (/Object/.test(String(arguments[0][current].constructor)))
{
getUDFs(arguments[0][current], getUDFs.id + current)
}
}
}
}
getUDFs(jQuery,"jQuery")
遞歸版本與取證:
function getUDFs()
{
var current;
/* Use current instead of _ to avoid creating an iterator global variable */
for(current in arguments[0])
{
getUDFs.id = arguments[1] + " => ";
/* If the property is not null or undefined */
if (!!arguments[0][current])
{
/* If the constructor is the Function object */
if (/Function/.test(String(arguments[0][current].constructor)))
{
/* Store in an array */
if (getUDFs.hasOwnProperty("data"))
{
try{getUDFs.data.push(getUDFs.id + current + String().concat("- args: ","(", arguments[0][current]["length"], ")"))}catch(e){getUDFs.data.push(getUDFs.id + current)};
try{getUDFs.data[getUDFs.data.length-1] += "required:" + !arguments[0][current]() ? true: false}catch(e){getUDFs.data[getUDFs.data.length-1] += "required: true"}
}
else
{
getUDFs.data = []
}
}
if (arguments[0].hasOwnProperty(current))
{
if (/Object/.test(String(arguments[0][current].constructor)))
{
getUDFs(arguments[0][current], getUDFs.id + current)
}
}
}
}
}
getUDFs(jQuery,"jQuery");
getUDFs.data.toString().replace(",","\n","g")
參考
+1
這會將變量泄漏到全局範圍。這不是一個很好的近似值。 'Object.keys(window)'更容易輸入,並且相當接近。 – 2013-08-26 21:09:48
+0
對於發佈的近似值,我獲得了167個節點,ECMAScript-5 Object.keys方法獲得了205個節點。無論如何,這篇文章是社區維基的原因,所以隨時編輯。 – 2013-08-26 21:33:27
相關問題
- 1. Chrome和Firefox控制檯中的「未定義」通話是否可以刪除?
- 2. 將自定義功能添加到Chrome控制檯中
- 3. Chrome DevTools:在控制檯中顯示函數對象的屬性
- 4. 是否可以訪問用戶數據屬性和功能?
- 5. 在自定義web控件中顯示可能的屬性值
- 6. 是否可以強制自動屬性使用只讀後臺?
- 7. 是否有可能在WPF用戶控件上定義屬性是必需的?
- 8. 是否可以在Jupyter筆記本中顯示控制檯?
- 9. 是否可以在javascript控制檯中定義int32值?
- 10. 是否可以在Chrome控制檯中保存過濾器?
- 11. 爲什麼Chrome的控制檯不再顯示功能代碼?
- 12. Eclipse中是否有控制檯功能?
- 13. 是否可以通過模型控制像'只讀'的屬性?
- 14. Chrome控制檯不再顯示對象屬性
- 15. Chrome控制檯顯示對象屬性爲undefined
- 16. 是否可以顯示遠程連接的控制檯?
- 17. Chrome控制檯的自動填充功能是否變得更具侵略性?
- 18. Firebase Google Auth用戶未在Firebase控制檯中顯示
- 19. 是否可以顯示用戶的自定義操作狀態?
- 20. Google Apps是否會阻止Chrome控制檯中的代碼?
- 21. htmlunit是否可以使用自定義HTML屬性(「expando屬性」)?
- 22. 使用資源和用戶定義的控制屬性
- 23. 是否可以在內容屬性的值中使用CSS自定義屬性?
- 24. 是否可以使用JavaScript和Chrome的NaCl來模擬控制檯?
- 25. 是否可以在具有穿透效果的控制檯中顯示文本?
- 26. 自定義WPF控件是否可以實現IsDefault屬性
- 27. 是否可以在控制檯應用程序中使用Google API maps.jar?
- 28. 是否可以在ASPX代碼隱藏中定義一次性用戶控件?
- 29. 是否可以在Google文檔電子表格中定義新功能?
- 30. 是否可以'DataBind'用戶控件的單個屬性?
[這個問題](http://stackoverflow.com/questions/6308955/is-there-a-way-to-get-document-and-window-properties-in-chrome/ 6311663#6311663)是相似的,但我特別尋找一種方法來過濾窗口對象 – darronz 2013-02-20 10:47:33