![](/img/trans.png)
[英]Javascript inheritance of properties defined with Object.defineProperty
[英]How to access the properties of a JavaScript object using a “for in” loop when they are defined with `Object.defineProperty`
我有一個JavaScript對象,該對象具有一些使用Object.defineProperty
函數創建的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 in”循環遍歷屬性時,“ Object.defineProperty
”將被忽略。
這不是for in
循環的,但也許對您來說仍然足夠。 您可以使用Object.getOwnPropertyNames
獲得這些屬性名稱,然后循環遍歷它們:
var propNames = Object.getOwnPropertyNames(myObject);
for(var i=0; i<propNames.length; i++) {
alert(myObject[propNames[i]]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.