2015-12-26 46 views
2

如何列出对象中的所有属性(方法和属性)及其原型链? 我对它们都感兴趣(enumerable,而不是enumerable)。Javascript - 列出所有属性

目标浏览器 - 铬。

回答

0

此:

for(var k in obj) { 
    console.log(k, obj[k]) // name, value 
} 

例子:

var obj1 = { a: 10, b: "x", c: { no: "no" }} 
 
var obj2 = new Object(obj1) 
 
obj2.d = "yes" 
 

 
for (var k in obj2) { 
 
    console.log(k, obj2[k]) // name, value 
 
}

0

我感兴趣的所有的人(枚举和不可枚举)。

无法枚举什么是不可枚举。实际上,您可以定义不枚举属性以避免它们作为迭代器的一部分出现,如for...inObject.keys。看到这个其他Q &一个更多地了解一个解决方法:Is it possible to get the non-enumerable inherited property names of an object?

就目前而言,迭代的最简单的方式,所有的属性,既自己的属性原型的属性使用for...in循环:

for(var propertyName in obj) { 

} 

你也可以使用Object.hasOwnProperty来检查,如果属性未在给定对象的原型声明:

for(var propertyName in obj) { 
    if(obj.hasOwnProperty(propertyName)) { 
     // It's not from the object's prototype... 
    } 
} 
相关问题