Javascript 如何使用;在「;使用“Object.defineProperty”定义时循环`

Javascript 如何使用;在「;使用“Object.defineProperty”定义时循环`,javascript,Javascript,我有一个JavaScript对象,它有一些属性是使用object.defineProperty函数创建的。我想使用“for in”方法遍历它的所有属性,但是这些属性被忽略了。还有别的办法吗 var myObject={ prop1:“这是属性1”, prop2:“这是第二号酒店” }; (功能(){ var prop3=“这是一个只读属性”; Object.defineProperty(myObject,“prop3”{ get:function(){ 返回prop3; }, set:func

我有一个JavaScript对象,它有一些属性是使用
object.defineProperty
函数创建的。我想使用“for in”方法遍历它的所有属性,但是这些属性被忽略了。还有别的办法吗

var myObject={
prop1:“这是属性1”,
prop2:“这是第二号酒店”
};
(功能(){
var prop3=“这是一个只读属性”;
Object.defineProperty(myObject,“prop3”{
get:function(){
返回prop3;
},
set:function(){
console.warn(“'myObject.prop3'为只读”);
}
});
})();
警报(“属性3=“+myObject.prop3”);
for(myObject中的变量k){
警报(myObject[k]);
}
希望我能帮忙;)

供日后参考:

希望我能帮忙;)


供将来参考:

这不适用于
循环中的
,但可能对您来说仍然足够好。您可以使用
Object.getOwnPropertyNames
获取这些属性名称,然后循环使用它们:

var propNames = Object.getOwnPropertyNames(myObject);
for(var i=0; i<propNames.length; i++) {
    alert(myObject[propNames[i]]);
}
var-propNames=Object.getOwnPropertyNames(myObject);

for(var i=0;i这不是
for in
循环,但可能对您来说仍然足够好。您可以使用
Object.getOwnPropertyNames
获取这些属性名称,然后循环:

var propNames = Object.getOwnPropertyNames(myObject);
for(var i=0; i<propNames.length; i++) {
    alert(myObject[propNames[i]]);
}
var-propNames=Object.getOwnPropertyNames(myObject);

对于(var i=0;i伟大的答案,但@komnions答案更符合我的要求。但我仍然给了你一个“向上”的回答。回答很好,但@komnions答案更符合我的要求。但我仍然给了你一个“向上”。