- 此问题在此处已有答案**:
List All Prototype Properties of a Javascript Object(3个答案)
Is it possible to get the non-enumerable inherited property names of an object?(11个答案)
How to iterate over all properties in object's prototype chain?(1个答案)
How do I loop through or enumerate a JavaScript object?(48个答案)
How to console.log all inherited properties?(4个答案)
3天前关闭。
机构群体在3天前审核了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
正如MDN网站上所说的"for ... in最实际的用途是用于调试目的",我也在这么做。除了使用for ... in
来获得键的数组之外,还有其他方法可以得到同样的结果吗?
我在stackoverflow上读到的每个其他线程都给出了类似下面代码中的替代方案,这不是获得相同功能的解决方案。
var myp= document.createElement('p');
var a = new Array();
for (var each in myp) { a.push(each);}
var b = Object.keys(myp);
var c = Object.getOwnPropertyNames(myp);
console.log(a,b,c);
编辑:作为关闭原因给出的"重复"有一个完全不同的问题的目的,毫不奇怪,他们也不是我的问题的答案。:/
1条答案
按热度按时间7z5jn7bk1#
要模拟
for..in
,必须遍历对象的内部原型,直到到达原型链的顶部。这可能不是100%符合规范,但在绝大多数情况下都是足够接近的。
也就是说,这段代码和你的原始代码都很奇怪,你在链接中引用的建议也很奇怪--如果你在调试,通常只做
console.log(obj)
或console.dir(obj)
会更容易,以免控制台被大量的属性污染(你可以在任何现代浏览器的devtools中点击它来扩展对象)。