Ich möchte den Status der ES-Funktion "Spread Object Merge" in Browsern und im Ökosystem über Tools zusammenfassen.
Spec
Browser: bald in Chrome, in SF, Firefox (Version 60, IIUC)
- Browserunterstützung für in Chrome 60 gelieferte "Spread Properties" , einschließlich dieses Szenarios.
- Die Unterstützung für dieses Szenario funktioniert NICHT in aktuellem Firefox (59), funktioniert jedoch in meiner Firefox Developer Edition. Ich glaube also, dass es in Firefox 60 ausgeliefert wird.
- Safari: nicht getestet, aber Kangax sagt, dass es in Desktop Safari 11.1 funktioniert, aber nicht in SF 11
- iOS Safari: nicht getestet, aber Kangax sagt, dass es in iOS 11.3 funktioniert, aber nicht in iOS 11
- noch nicht in Edge
Werkzeuge: Knoten 8.7, TS 2.1
Links
Codebeispiel (dient gleichzeitig als Kompatibilitätstest)
var x = { a: 1, b: 2 };
var y = { c: 3, d: 4, a: 5 };
var z = {...x, ...y};
console.log(z); // { a: 5, b: 2, c: 3, d: 4 }
Nochmals: Zum Zeitpunkt des Schreibens funktioniert dieses Beispiel ohne Transpilation in Chrome (60+), Firefox Developer Edition (Vorschau von Firefox 60) und Node (8.7+).
Warum antworten?
Ich schreibe dies 2,5 Jahre nach der ursprünglichen Frage. Aber ich hatte genau die gleiche Frage, und hier hat Google mich hingeschickt. Ich bin ein Sklave von SOs Mission, den langen Schwanz zu verbessern.
Da dies eine Erweiterung der "Array Spread" -Syntax ist, war es für mich sehr schwierig zu googeln und in Kompatibilitätstabellen schwer zu finden. Das nächste, das ich finden konnte, ist Kangax "Property Spread" , aber dieser Test enthält nicht zwei Spreads im selben Ausdruck (keine Zusammenführung). Auch der Name auf den Statusseiten für Vorschläge / Entwürfe / Browser verwendet alle "Eigenschaftsverteilung", aber es scheint mir, dass dies ein "erster Grundsatz" war, zu dem die Community nach den Vorschlägen zur Verwendung der Verbreitungssyntax für "Objektzusammenführung" gelangt ist. (Dies könnte erklären, warum es so schwierig ist, zu googeln.) Daher dokumentiere ich meine Ergebnisse hier, damit andere Links zu dieser bestimmten Funktion anzeigen, aktualisieren und kompilieren können. Ich hoffe es fängt an. Bitte helfen Sie dabei, die Nachricht von der Landung in der Spezifikation und in den Browsern zu verbreiten.
Zuletzt hätte ich diese Informationen als Kommentar hinzugefügt, aber ich konnte sie nicht bearbeiten, ohne die ursprüngliche Absicht der Autoren zu brechen. Insbesondere kann ich den Kommentar von @ ChillyPenguin nicht bearbeiten, ohne dass er seine Absicht verliert, @RichardSchulte zu korrigieren. Aber Jahre später stellte sich Richard als richtig heraus (meiner Meinung nach). Also schreibe ich stattdessen diese Antwort in der Hoffnung, dass sie irgendwann bei den alten Antworten an Bedeutung gewinnt (könnte Jahre dauern, aber genau darum geht es schließlich beim Long-Tail- Effekt).