遍历div对象,为啥是空数组呢

image.png

我知道可以通过for in 遍历得到,但我更想知道,为什么 这种方式 得不到;
以及两种方式的区别,再次感谢

image.png

阅读 1.8k
2 个回答

你可以试试这段代码:

for (let key in div) {
    console.log(div.propertyIsEnumerable(key));
}

更新
Object.keyObject.getOwnPropertyNames 方法,工作原理基本相同,只能获取自身的可枚举的属性,像cloneNode属性是来自原型链,不是来自自身,所以获取不了

我的思路是:
您也可以沿原型链走,并将所有属性收集到一个arr中,但是比你写的代码片段更多操作了。

var e = document.createElement('div');

const getAllProperties = (e, props = []) => {
  return e.__proto__ ? getAllProperties(e.__proto__, props.concat(Object.keys(e))) : [...new Set(props.concat(Object.keys(e)))];
}

const divProps = getAllProperties(e);

console.log(divProps)

也可以通过Object.propertyIsEnumerable判断是否是可枚举
MDN文档


旧回答:

答:Object.key 无法获取不可枚举属性

可以通过Object.getOwnPropertyNames() 方法获取

参考MDN文档

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题