我有一个JavaScript对象,它有一些使用Object.defineProperty
函数创建的属性。我想使用" for in"迭代它的所有属性。方法,但忽略这些属性。还有其他方法可以做到这一点吗?
var myObject = {
prop1: "This is property 1",
prop2: "This is property 2"
};
(function(){
var prop3 = "This is a read only property";
Object.defineProperty(myObject, "prop3", {
get: function(){
return prop3;
},
set: function(){
console.warn('"myObject.prop3" is read only.');
}
});
})();
alert("Property 3 = " + myObject.prop3);
for(var k in myObject){
alert(myObject[k]);
}

第一个警告向我们显示" prop3"是一个用Object.defineProperty
定义的不动产,但是当我们使用" for"来迭代属性时循环" prop3"被忽略了。
答案 0 :(得分:3)
答案 1 :(得分:1)
这不是for in
循环,但可能仍然适合你。您可以使用Object.getOwnPropertyNames
获取这些属性名称,然后循环遍历它们:
var propNames = Object.getOwnPropertyNames(myObject);
for(var i=0; i<propNames.length; i++) {
alert(myObject[propNames[i]]);
}