Spricht JavaScript für in-Schleife über Methoden?

8

In einem Artikel auf yuiblog sagt Douglas Crockford, dass die% co_de Die% -Anweisung wird über die Methoden eines Objekts iterieren. Warum produziert der folgende Code ["a", "b", "c", "d", "toString"] nicht? Sind nicht .toString () und andere Methoden Mitglieder von my_obj?

%Vor%     
hekevintran 30.03.2010, 01:40
quelle

2 Antworten

12

Alle benutzerdefinierten Eigenschaften sind aufzählbar, einschließlich der vom Prototyp geerbten Eigenschaften. Die integrierten nativen Eigenschaften sind nicht. toString() ist einer von ihnen. Siehe hier Ссылка

Bearbeiten : Meine Interpretation von "Die Schleife wird jedoch über alle benutzerdefinierten Eigenschaften (einschließlich aller, die die integrierten Eigenschaften überschreiben) iteriert" ist dies die Eigenschaft die direkt im Objekt überschrieben werden, werden aufzählbar. Nicht das Überschreiben im Prototyp selbst. Das heißt:

%Vor%     
Chetan Sastry 30.03.2010, 01:49
quelle
2

for..in iteriert über benutzerdefinierte Eigenschaften. Wenn Sie Ihren Code in:

ändern %Vor%

Dann

%Vor%

Wird ausgegeben:

%Vor% Chetan Sastry zeigte zugespitzt aus, toString wird anders behandelt, da es sich um eine integrierte native Eigenschaft handelt.

    
Justin Johnson 30.03.2010 01:44
quelle

Tags und Links