Javascript 如何记录/调试对象属性、忽略方法/函数
我想使用Chrome的开发控制台来跟踪对象的属性,但是在有很多方法的对象上,遍历所有函数引用是一件痛苦的事情。有没有一种很好的方法可以调试对象而不显示其关联的方法/函数?我一直在玩弄下面的代码,以复制对象和条带函数引用,但我无法让它工作。。。谢谢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
<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]
insidefor 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
值的属性。对,我不想显示它。我想删除密钥,因此它根本不显示。