In der MDN page forObject.assign() umschließt das Beispiel Polyfill zuerst alle Quellen und die Zielparameter in Object()
, bevor Sie über die Eigenschaften iterieren. (d.h. Object(target)
, Object(source1)
, Object(source2)
...).Was ist der Zweck von `Object (target)` in `Object.assign()` polyfill
Der Text erwähnt auch, dass die zusätzlichen Eigenschaften direkt zum Ziel hinzugefügt werden, bevor das Ziel zurückgegeben wird. Durch das Umbrechen des Ziels in Object()
wird jedoch ein Objekt erstellt, das sich von der einfachen Erweiterung der Eigenschaften unterscheidet. (d. h. Object(target).newProp !== target.newProp
).
Alle angegebenen Beispiele haben Objekte als Parameter zu Object.assign()
. Der Anwendungsfall für Nicht-Objekt-Quell- oder Zielparameter ist daher nicht klar.
A) Welchen Zweck hat das Umschließen von Parametern in Object()
? (Ich habe den Eindruck, dass Object.keys(x)
ist das gleiche wie Object.keys(Object(x))
).
B) Was sind mögliche Anwendungsfälle für die Verwendung von Object.assign()
mit Nicht-Objekten, ist eine? (Zum Beispiel so etwas wie: Object.assign(1, 'b', [3], true, function(){})
)
'Objekt (Ziel)' wirft das Ziel in ein Objekt. Zum Beispiel: 'Objekt (" 1234 ")" wirft dies auf "[Objekt String] {0:" 1 ", 1:" 2 ", 2:" 3 ", 3:" 4 ", Länge: 4}' – Mouser
Normalerweise ist es am besten, die Spezifikation in Verbindung mit dem Polyfill zu lesen, da sie oft versuchen, das Verhalten zu replizieren. Sie können von der [* ed. 6 Entwurf *] (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign), dass jedes Argument an * ToObject * übergeben wird. Da natives Skript nicht auf interne Methoden zugreifen kann, ist der Aufruf von 'Object (target)' und 'Object (source)' eine Näherung (wenn auch nicht exakt die gleiche, insbesondere für * null * und * undefined *). – RobG
@Mouser. Ich verstehe, was Object() tut. Was ich nicht verstehe, ist, warum Sie so etwas wie Object.assign ([], 'a', 3, function() {}) machen würden. – Hurelu