สำหรับการอ้างอิงส่วนที่เหลือ / สเปรดถูกสรุปใน ECMAScript 2018 เป็นสเตจ 4 ข้อเสนอสามารถพบได้ที่นี่ที่นี่
สำหรับการรีเซ็ตวัตถุส่วนใหญ่และการแพร่กระจายทำงานในลักษณะเดียวกันความแตกต่างที่สำคัญคือการแพร่กระจายกำหนดคุณสมบัติในขณะที่ Object.assign () ตั้งค่าพวกเขากำหนดให้พวกเขา ซึ่งหมายถึง Object.assign () เรียกใช้ตัวตั้งค่า
เป็นมูลค่าการจำที่นอกเหนือจากนี้แผนที่ส่วนที่เหลือ / การแพร่กระจาย 1: 1 แผนที่ไปยัง Object.assign () และทำหน้าที่แตกต่างกันไปในการแพร่กระจายอาร์เรย์ (iterable) ตัวอย่างเช่นเมื่อการแพร่กระจายค่าอาร์เรย์เป็นศูนย์จะแพร่กระจาย อย่างไรก็ตามการใช้การกระจายออบเจ็กต์ค่าศูนย์จะถูกกระจายไปอย่างเงียบ ๆ เพื่ออะไร
Array (Iterable) Spread ตัวอย่าง
const x = [1, 2, null , 3];
const y = [...x, 4, 5];
const z = null;
console.log(y); // [1, 2, null, 3, 4, 5];
console.log([...z]); // TypeError
ตัวอย่างการกระจายวัตถุ
const x = null;
const y = {a: 1, b: 2};
const z = {...x, ...y};
console.log(z); //{a: 1, b: 2}
สิ่งนี้สอดคล้องกับวิธีการทำงานของ Object.assign () ทั้งสองแยกค่า null ที่ไม่มีข้อผิดพลาดโดยไม่มีข้อผิดพลาด
const x = null;
const y = {a: 1, b: 2};
const z = Object.assign({}, x, y);
console.log(z); //{a: 1, b: 2}