2013-12-11 59 views
0

我想使用Chrome的開發控制檯來跟蹤對象的屬性,但對於有很多方法的對象,通過所有的函數引用。有沒有一種漂亮的方式來調試對象而不顯示相關的方法/功能?我一直在玩弄下面的代碼,以複製對象和strip函數引用,但我無法得到它的工作......謝謝!如何記錄/調試對象屬性,忽略方法/函數混亂

<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.js' type='text/javascript'></script> 
<script> 
function plog(obj){ 
    var key; 
    var clone = jQuery.extend(true, {}, obj); 
    for (key in obj){ 
     if(typeof(obj.key) == "function") { 
      delete clone[key]; 
     } 
    } 
    console.log(clone); 
} 
</script> 
<a href="#" onclick="plog(window);">Click Here</a> 

回答

0

要獲得的屬性的值,你應該使用內循環for-inobj[key]索引訪問beecause keyString與財產的名稱。

var getProperties = function(obj) { 
    var propsCopy, 
     i; 
    propsCopy = {}; 
    for(i in obj) { 
     if(typeof(obj[i]) !== 'function') { 
      propsCopy[i] = obj[i]; 
     } 
    } 
    return propsCopy; 
}; 

var obj = { 
    x: 1, 
    y: 2, 
    fn: function(x) { 
     return x * x; 
    } 
}; 

console.log(obj); 
console.log(getProperties(obj)); 

DEMO

此外,它可能是很好的閱讀documentation page

enter image description here

+0

當在「窗口」運行此,函數名仍然被顯示,儘管它們包含空值。有什麼方法可以排除這些嗎? – skibulk

+0

我已將控制檯輸出的屏幕截圖添加到我的答案中。它正常工作。你在「窗口」上說什麼? –

+0

我的意思是如果你調用「console.log(getProperties(window))」。從字面上看,包含當前文檔的窗口。它有幾十個函數引用...另外,你是如何在最後一條評論中灰顯文本的? – skibulk