Javascript - 列出所有属性

时间:2015-12-26 21:59:27

标签: javascript list properties prototype chain

如何列出对象及其原型链中的所有属性(方法和属性)? 我对所有这些都感兴趣(可枚举,而不是可枚举)。

目标浏览器 - chrome。

2 个答案:

答案 0 :(得分: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
}




答案 1 :(得分:0)

  

我对所有这些感兴趣(可枚举,而不是可枚举)。

您无法枚举不可枚举的内容。实际上,您可以定义不可枚举的属性,以避免它们显示为for...inObject.keys等迭代器的一部分。请参阅此其他问答以了解有关解决方法的更多信息: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...
   }
}