2017-02-27 4 views

Antwort

2

Eine For-Schleife wird in die Prototyp-Kette eines Objekts schauen. Hier ist eine gute article drauf.

Um dies zu vermeiden, können Sie innerhalb der Schleife eine if-Anweisung erstellen, die überprüft, ob die Eigenschaft Teil des Objekts ist.

for (var name in buz) { 
    if (buz.hasOwnProperty(name)) { 
    console.log('this is fog (' + name + ') for sure. Value: ' + buz[name]); 
    } 
    else { 
    console.log(name); // toString or something else 
    } 
} 

Weitere Informationen über hasOwnProperty.

+0

Aber warum es eine neue Eigenschaft erhöht, weil ich die Ergebnisse ausgab, sind die Resultate vom Endergebnis unterschiedlich. Woher kommt diese neue Immobilie? – ZHONGJIAFENG

+0

Dies ist, wie Javascript-Prototyp-Vererbung funktioniert, es ist ein großer Teil der Sprache. Um es vollständig zu erklären geht es über den Rahmen dessen, wofür stackoverflow ist, lies die Artikel, mit denen ich verlinkt bin. Wenn Sie eine Klasse und eine Unterklasse erstellen, erbt die Unterklasse alle Methoden der Klasse über die Prototypkette. Wenn Sie eine Methode für eine Instanz der Unterklasse aufrufen, die nicht gefunden werden kann, verschiebt sie sich schrittweise um die Prototypkette, bis sie die Methode findet. So haben alle von Ihnen erstellten Klassen die grundlegenden Methoden, die alle Objekte gemeinsam haben. – spirift

+0

Vielen Dank. Aus meiner Sicht über Vererbung denke ich, es ist nur ein Zeiger auf SuperType-Prototyp beziehen, also wenn ich for-Schleife verwende, wird es bis Objekt-Prototyp durchlaufen? ist es richtig? – ZHONGJIAFENG