2016-02-06 3 views
7

Ich mag würde den Unterschied zwischen diesen wissen:Unterschied zwischen Object.assign und weisen nur

Object.assign(otherObject, { 
    someNewProperty: '' 
}); 

und

otherObject.someNewProperty = ''; 

Und .. welche ist schneller?

Danke.

+0

diese Weise benutzt wird, gibt es keinen Unterschied, wird die Eigenschaft des zweiten Objekts einfach auf das erste Objekt kopiert. 'Object.assign' hat jedoch andere Verwendungsmöglichkeiten als nur eine einzelne Eigenschaft hinzuzufügen. Was schneller ist ist wahrscheinlich egal, du wirst den Unterschied nie bemerken. – adeneo

+0

Überprüfen Sie hier: http://jsperf.com/diff-assign –

+0

verrückt @VickyGonsalves !!!!!!!!! –

Antwort

2

Die Object.assign() Methode wird verwendet, um die Werte aller enumerable eigenen Eigenschaften von einem oder mehreren Quellobjekte zu einem Ziel Objekt zu kopieren. Es wird das Zielobjekt zurückgeben.

Während otherObject.someNewProperty = ''; eine Methode ist, um einer Eigenschaft eines Objekts einen Wert direkt zuzuweisen.

Natürlich zweite Methode, die Wert zu einem Objekt mit Punktnotation ist schneller.

Sie die Leistung hier überprüfen: jsperf.com/diff-assign

2

Object.assign() ist eine ziemlich vielseitige Funktion, die entwickelt wurde, um komplexe Objektkompositionen zu erstellen.

Die Eigenschaftspunktnotation ist eine direkte Methode, um einer einzelnen Eigenschaft einen einzelnen Wert zuzuweisen.

In Bezug auf die ist schneller, das ist irrelevant angesichts diese nicht gleichwertig sind, und wie einer meiner all time favorite posts bemerkt „Vorstellung, die man schneller läuft, ist vielleicht ein Rohrkrepierer“.

0

Für einzelne Eigenschaften ist die direkte Zuweisung (otherObject.someNewPropertie = '') doppelt so schnell, aber für mehrere Werte - die Zeit wird größer. Jede Eigenschaft + 5-10%. Code-weise Object.assign ist auch besser für mehrere Optionen.

Object.assign(otherObject, { 
    prop1: '', 
    prop2: '', 
    prop3: '', 
    ... 
}); 

VS

otherObject.prop1 = ''; 
otherObject.prop2 = ''; 
otherObject.prop3 = ''; 
... 

Sie können einfach laufen Registerkarte Profile in Chrome Entwicklungs-Tool und einige Tests durchführen.

Verwandte Themen