Javascript 如何记录/调试对象属性、忽略方法/函数

Javascript 如何记录/调试对象属性、忽略方法/函数,javascript,debugging,properties,console,Javascript,Debugging,Properties,Console,我想使用Chrome的开发控制台来跟踪对象的属性,但是在有很多方法的对象上,遍历所有函数引用是一件痛苦的事情。有没有一种很好的方法可以调试对象而不显示其关联的方法/函数?我一直在玩弄下面的代码,以复制对象和条带函数引用,但我无法让它工作。。。谢谢 <script src='https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.js' type='text/javascript'></script> <sc

我想使用Chrome的开发控制台来跟踪对象的属性,但是在有很多方法的对象上,遍历所有函数引用是一件痛苦的事情。有没有一种很好的方法可以调试对象而不显示其关联的方法/函数?我一直在玩弄下面的代码,以复制对象和条带函数引用,但我无法让它工作。。。谢谢

<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>

功能plog(obj){
var键;
var clone=jQuery.extend(true,{},obj);
用于(输入obj){
if(类型(对象键)=“功能”){
删除克隆[密钥];
}
}
console.log(克隆);
}

要获取属性值,您应该使用索引访问,如
obj[key]
inside
for in
loop bee,因为
key
是一个带有属性名称的
字符串

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));

读这篇文章也会很好


在“窗口”上运行此操作时,函数名仍会显示,尽管它们包含空值。有什么方法可以排除这些吗?我在回答中添加了控制台输出的屏幕截图。它工作正常。你在“窗口”上说
是什么意思?我的意思是如果你调用“console.log(getProperties(window))”。实际上,包含当前文档的窗口。它有几十个函数引用。。。还有,你上次评论的文字是如何变灰的?好的,我明白了。如果您的意思是,例如,
onclick:null
,那么这还不是一个函数。因为没有分配事件处理程序。所以它只是一个带有
null
值的属性。对,我不想显示它。我想删除密钥,因此它根本不显示。