可以完全迭代javascript对象的成员吗?

时间:2012-09-22 14:21:14

标签: javascript object reflection

我希望能够遍历所有对象的成员。像这样的东西:

 function reflect(obj) {
 var str = "";
 for (member in obj) { str += (member + "\n"); }
 return str;
 }

Enumerable 标志会阻止 for 循环中的许多成员出现。    我的问题是:

  1. 是否有另一种方法来迭代一个对象的成员,这些成员公开所有

  2. 如果没有,是否可以访问这些标志? (可枚举设置为true?)

  3. 有没有办法公开原型链并确定哪个成员属于哪个祖先?

1 个答案:

答案 0 :(得分:1)

您可以使用getOwnPropertyNames。无论可枚举选项如何,它都会返回所有属性。

var objectProperties = Object.getOwnPropertyNames(obj);

更新这仅适用于Javascript 1.8.5及更高版本! (感谢@Kiyura)