2016-03-20 4 views
2

Wenn ich ein Objekt mit literaler Syntax erzeuge, werden beim Drucken des Objekts in die Konsole das Objekt foo und die p-Eigenschaft angezeigt.Warum werden Eigenschaften nicht angezeigt, wenn Object.create() und console.log() verwendet werden?

Wenn ich die Object.create() - Syntax verwende, wird beim Drucken des Objekts mit der Datei console.log ein leeres Objekt angezeigt.

bar = Object.create({}, { p: { value: 42 } }); 
console.log(bar); 
console.log(bar.p); 

Outputs: 
{} 
42 

Warum bar zeigt nicht die Eigenschaft p wenn console.log() verwenden?

+2

die Browser verwenden Sie es in meinem Chrom funktioniert gut 49 – thanhpk

+0

Welche Umgebung verwenden Sie? – Bergi

Antwort

2

Ich vermute, Sie verwenden NodeJS für diese Tests.

Der Grund dafür ist, dass in Ihrem zweiten Beispiel (unter Verwendung von Object.create), die p Eigenschaft ist nicht-zählbare. Wenn ich Ihre Beispiele auf NodeJS ausführe, sehe ich im zweiten Beispiel nicht, weil es nicht aufzählbar ist, da Eigenschaften, die über Eigenschaftsdeskriptoren wie dem in Ihrem zweiten Argument Object.create standardmäßig zu nicht aufzählbar erstellt werden, wenn Sie enumerable: true einschließen. Wenn ich dazu enumerable: true hinzufüge, sehe ich auch im zweiten Beispiel p.

Was Sie sehen, hängt davon ab, welche Umgebung Sie verwenden. Zum Beispiel sehe ich in den Devtools von Chrome in beiden Beispielen , auch wenn nicht aufzählbar ist. Aber bei der Ausgabe an eine nicht interaktive Konsole haben sie sich entschieden, nur aufzählbare Eigenschaften anzuzeigen.

0

Ich versuchte es in der Konsole und es funktioniert gut.

enter image description here

Verwandte Themen