我试图获取/计算对象的属性并找到了这个 QaA和这个跨浏览器解决方案。
但是,Object.keys
并不总是返回与 with 相同的值for-in loop
。
var obj = {foo: "foo", bar: "bar"};
// foo, bar
console.log(Object.keys(obj));
// foo, bar
for(var p in obj) {
console.log(p);
}
var obj = document.body.style;
// [] <-- empty array
console.log(Object.keys(obj));
// background, backgroundImage, border, fontFamily...
for(var p in obj) {
console.log(p);
}
我不确定对象document.body.style
是否是enumerable
.
即使它们是,根据 Mozilla,我们也可以使用不可Object.getOwnPropertyNames
枚举的属性,但它也返回一个空数组。
有人可以解释一下吗?是否有可能在document.body.style
没有 for-in 循环的情况下获得对象的所有属性?
编辑
糟糕,我只用 Firefox 进行了测试。在 Osiris 发表评论之前,我意识到这只发生在Firefox(19 和 20 是最新版本)上。IE 9、Opera 12、Chrome 26、Safari 5 都可以。