我知道可以通过for in 遍历得到,但我更想知道,为什么 这种方式 得不到;
以及两种方式的区别,再次感谢
更新:Object.key
和 Object.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()
方法获取
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
你可以试试这段代码: