[英]JavaScript - Iterating through objects in instance of object 'class'
我正在嘗試使用純JavaScript遍歷對象實例內的所有對象。
我嘗試過這樣的事情:
function a(){
this.iterate = function(){
for (var obj in this){
console.log(obj);
}
}
}
var A = new a();
A.insertedValue = 20;
A.iterate();
這樣做時,只需記錄變量的名稱(例如“ insertedValue”),而不是為insertedValue記錄例如“ 20”。
有沒有更好的方法可以遍歷對象實例中的所有對象,或者有一種方法可以從我正在遍歷的對象中獲取值?
有沒有一種更好的循環遍歷對象實例中所有對象的方法,或者有一種方法可以從我正在循環遍歷的對象中獲取值?
因為您只是在this
鍵中打印鍵,而不是使用this[obj]
打印鍵值。
做了
function a(){
this.iterate = function(){
for (var obj in this){
console.log(this[obj]); //observe that this line has changed
}
}
}
您執行此操作的方式在很大程度上是正確的,只是for-in
循環遍歷對象屬性的名稱 ,而不是其值。 因此,要輸出屬性的值,請使用this[name]
:
function a(){
this.iterate = function(){
for (var name in this){
console.log(name + "=" + this[name]);
}
};
}
請注意, for-in
將遍歷對象的可枚舉屬性,包括它從其原型繼承的屬性。 如果您只想要自己的屬性,而不想要繼承的屬性,則可以通過hasOwnProperty
來檢查該屬性是否為“擁有”屬性:
function a(){
this.iterate = function(){
for (var name in this){
if (this.hasOwnProperty(name)) {
console.log(name + "=" + this[name]);
}
}
};
}
或使用方便的Object.keys
,它為您提供一系列自己的可枚舉屬性:
function a(){
this.iterate = function(){
Object.keys(this).forEach(function(name) {
console.log(name + "=" + this[name]);
});
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.