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.
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.
Tags und Links javascript underscore.js lodash