2017-01-21 3 views
1

Während Principles of Object-Oriented JavaScript Lese kam ich auf der folgende Zeile am Ende page 32 freien Kapitel Autor Webseite:[[Set]] Attribut des Objekts

Wenn ein Objekt zunächst auf ein Objekt hinzugefügt wird, JavaScript Anwendungen eine interne Methode namens [[Put]] für das Objekt. Die Methode [[Put]] erstellt einen Punkt im Objekt, um die Eigenschaft zu speichern.

Wenn einer vorhandenen Eigenschaft ein neuer Wert zugewiesen wird, wird eine separate Operation namens [[Set]] ausgeführt. Dieser Vorgang ersetzt den aktuellen Wert der Eigenschaft durch den neuen Wert.

Der Autor spricht hier von Wert von benannten Daten Eigenschaft zu ändern, die durch internes Attribut des Objekts [[Set]] genannt geschieht. Ich schaute in ECMA 5 und gefunden [[Get]], [[Put]], aber kein solches Attribut [[Set]]. Das Attribut [[Set]] steht jedoch für benannte Accessoren im Objekt zur Verfügung.

Meine Frage gibt es ein Objekt internes Attribut namens [[Set]]? Wenn nicht, wie geschieht die Änderung des Werts der Dateneigenschaft?

+0

ES5 ist alt, das letzte ist ES2016 und in diesem Jahr erhalten wir ES2017. – Oriol

Antwort

2

Das ist, weil [[] Put] umbenannt wurde [[] Set] in ECMAScript 6.

Insbesondere aus Early ES6 Working Drafts,

  • Rev 12 (22. November 2012 Entwurf)

    Ersetzt [[Get]]/[[Put]] mit [[GetP]]/[[SetP]].

  • Rev 14 (8. März 2013 Draft)

    Rename [[GetP]] bis [[Get]] und [[SetP]] in [[Set]]

In ES5 gab es eine [[Put]] interne Methode und keine [[Set]]. In ES6 gab es eine [[Set]] interne Methode und keine [[Put]]. Sie verhalten sich mehr oder weniger gleich.

+0

Ich habe die Frage aktualisiert. Bitte guck dir das an. Er spricht auch von [[Put]]. –

+1

@BreakingBenjamin Ich denke, der Autor des Textes wurde durch die Unterschiede zwischen ES5 und ES6 verwirrt – Oriol

+0

Also, nach ES6 für beide Zwecke (Einstellung und Änderung) wird [[Set]] verwendet? –

Verwandte Themen