Unveränderbar _.zuweisen (zuweisen mit Klon) aus lodash Unterstrich oder andere Bibliothek?

8

Gibt es eine alternative Methode in lodash, Unterstrich oder einer anderen Bibliothek, die sich fast genauso verhält, außer dass sie ein neues Objekt zurückgibt, anstatt das erste Argument zu mutieren?.

%Vor%     
Chad 12.05.2015, 15:37
quelle

3 Antworten

16

Die gebräuchlichste Art, dies zu tun, scheint ein leeres Objekt zu verwenden und diesem zuzuordnen, wie:

%Vor%

Dies ist technisch nicht unveränderlich, erzeugt aber ein "neues" Objekt, das vor dem Aufruf der Funktion nicht existierte.

Bedenken Sie, dass selbst eine sehr clevere Implementierung des Klons dasselbe tun müsste. Es ist trivial, das neue Objekt manuell zu erstellen, so dass die meisten Bibliotheken sich nicht um einen Helfer in diesem Fall kümmern müssen. Die nächste Sache wäre _.create , was mehr mit der Zuweisung des richtigen Prototyps zu tun hat.

    
ssube 12.05.2015, 15:39
quelle
5

Ich mag defaults () für solche Fälle.

%Vor%

Das erste Argument ist das Ziel und user ist nicht mutiert. Ich benutze defaults() gerne, wenn ich Eigenschaften überschreiben muss, wie dies hier bei age der Fall ist, möchte aber nichts im Original ändern. Weil defaults() nur Eigenschaften hinzufügt, die zu undefined aufgelöst werden. Die Eigenschaft age existiert im Objektliteral, daher wird der Wert beibehalten.

Der assign() -Ansatz funktioniert genauso gut - defaults() ist nur eine andere Art, darüber nachzudenken.

    
Adam Boduch 12.05.2015 20:39
quelle
2

Probieren Sie immutable-js

aus %Vor%     
Travis Kaufman 12.05.2015 15:43
quelle