簡體   English   中英

JavaScript-在對象“類”的實例中遍歷對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM