Saya ingin merangkum status fitur ES "spread object merge", di browser, dan di ekosistem melalui alat.
Spec
Browser: di Chrome, di SF, Firefox segera (ver 60, IIUC)
- Dukungan browser untuk "sebarkan properti" yang dikirim di Chrome 60 , termasuk skenario ini.
- Dukungan untuk skenario ini TIDAK berfungsi di Firefox saat ini (59), tetapi DOES bekerja di Edisi Pengembang Firefox saya. Jadi saya yakin itu akan dikirimkan di Firefox 60.
- Safari: tidak diuji, tetapi Kangax mengatakan itu berfungsi di Desktop Safari 11.1, tetapi tidak SF 11
- iOS Safari: tidak diuji, tetapi Kangax mengatakan itu bekerja di iOS 11.3, tetapi tidak di iOS 11
- belum di Edge
Alat: Node 8.7, TS 2.1
Tautan
Contoh Kode (berfungsi ganda sebagai uji kompatibilitas)
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 }
Lagi: Pada saat penulisan, sampel ini berfungsi tanpa transpilasi di Chrome (60+), Edisi Pengembang Firefox (preview Firefox 60), dan Node (8.7+).
Mengapa Menjawab
Saya menulis ini 2,5 tahun setelah pertanyaan awal. Tetapi saya memiliki pertanyaan yang sama, dan di sinilah Google mengirim saya. Saya seorang budak misi SO untuk memperbaiki ekor panjang.
Karena ini merupakan perluasan dari sintaks "array spread", saya merasa sangat sulit untuk google, dan sulit ditemukan di tabel kompatibilitas. Yang paling dekat yang bisa saya temukan adalah Kangax "sebaran properti" , tetapi tes itu tidak memiliki dua spread dalam ekspresi yang sama (bukan gabungan). Juga, nama dalam halaman status proposal / konsep / browser semua menggunakan "sebaran properti", tetapi bagi saya sepertinya itu adalah "prinsipal pertama" yang diterima komunitas setelah proposal untuk menggunakan sintaksis spread untuk "penggabungan objek". (Yang mungkin menjelaskan mengapa sangat sulit untuk google.) Jadi saya mendokumentasikan temuan saya di sini sehingga orang lain dapat melihat, memperbarui, dan menyusun tautan tentang fitur spesifik ini. Saya harap ini berhasil. Tolong bantu sebarkan berita itu mendarat di spec dan di browser.
Terakhir, saya akan menambahkan info ini sebagai komentar, tetapi saya tidak dapat mengeditnya tanpa melanggar maksud asli penulis. Secara khusus, saya tidak dapat mengedit komentar @ ChillyPenguin tanpa kehilangan niatnya untuk memperbaiki @RichardSchulte. Tetapi bertahun-tahun kemudian Richard ternyata benar (menurut saya). Jadi saya menulis jawaban ini sebagai gantinya, berharap akan mendapatkan daya tarik pada jawaban lama pada akhirnya (mungkin butuh bertahun-tahun, tapi itulah efek dari long tail , setelah semua).