2016-05-09 19 views
9

Betrachtet man die Dokumentation für ES6 Object.assign und Lodash _.assign sieht es so aus, als ob diese in genau der gleichen Weise funktionieren.Object.assign vs lodash _.assign

Ist das ein richtiges Verständnis? Oder fehlt mir etwas?

+3

Sicherlich sind sie entworfen zu tun das gleiche. Der einzige Unterschied, den ich sehen kann, ist, dass 'Object.assign' primitive Werte in Objekte konvertiert, während' _.assign' nicht (zB 'Object.assign (" hallo ", {foo: 1})') – apsillers

+0

Der beste Weg ist ist zu studieren [ihre] (https://github.com/lodash/lodash/blob/master/vendor/underscore/underscore.js#L1036-L1060) [Quellen] (https://developer.mozilla.org/en -US/docs/Web/JavaScript/Referenz/Global_Objects/Objekt/zuweisen # Polyfill). Im Fall von lodash ist dies jedoch etwas kompliziert, da es sich von Release zu Release ändert - das [changelog] (https://github.com/lodash/lodash/wiki/Changelog) erwähnt sogar Unterschiede im Verhalten. – Bergi

+0

danke @psillers! Das ist ein großer Unterschied, über den man Bescheid wissen sollte. Wenn Sie Lust haben, eine Antwort zu schreiben, werde ich Ihnen antworten. – sfletche

Antwort

17

Hängt vom Browser ab. Pro lodash docs:

Die _.assign verwenden die eingebaute Object.assign wenn verfügbar.

können Sie gehen hier für die Browser-Unterstützung:

Grundsätzlich IE haben keine Unterstützung so Code des lodash in diesem Fall verwendet wird

MDN Docs on Object.assign

+0

Entschuldigung, ich hätte klarer sein sollen. Ich weiß, dass einige Browser noch keine Unterstützung für Object.assign haben. Ich habe mich gefragt, ob diese Umgebungen beides bieten, gibt es einen Unterschied zwischen den beiden? – sfletche

+3

lodash verweist auf den Browser, also nein, die native Implementierung wird in diesem Fall verwendet – JordanHendrix

+1

ah! Es tut uns leid! Ich habe deine Antwort falsch gelesen. Ich sehe jetzt, was Sie sagen (dass lodash selbst Object.assign benutzt, wenn es verfügbar ist, was es so klingen lässt, als ob der Autor des lodash nicht beabsichtigt hätte, zwischen den beiden zu unterscheiden). sehr hilfreich. Danke @ JordanHendrix! – sfletche