संदर्भ वस्तु के लिए बाकी / प्रसार को ईसीएमएस्क्रिप्ट 2018 में एक चरण के रूप में अंतिम रूप दिया गया है। प्रस्ताव यहां पाया जा सकता है ।
अधिकांश भाग ऑब्जेक्ट रीसेट और फैलाने के लिए उसी तरह काम करते हैं, मुख्य अंतर यह है कि प्रसार गुण को परिभाषित करता है, जबकि Object.assign () उन्हें सेट करता है । इसका अर्थ है Object.assign () ट्रिगर बसता है।
यह याद रखने योग्य है कि इसके अलावा, ऑब्जेक्ट रेस्ट / स्प्रेड 1: 1 मैप्स टू ऑब्जेक्ट.स्सिग्न () और एरे (फैलने योग्य) फैलाने के लिए अलग-अलग कार्य करता है। उदाहरण के लिए, जब एक सरणी अशक्त मान फैल रहा है। हालाँकि ऑब्जेक्ट स्प्रेड अशक्त मानों के उपयोग से चुपचाप कुछ भी नहीं फैलता है।
ऐरे (Iterable) स्प्रेड उदाहरण
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 () काम करेगा के साथ संगत है, दोनों चुपचाप बिना किसी त्रुटि के अशक्त मान को बाहर करते हैं।
const x = null;
const y = {a: 1, b: 2};
const z = Object.assign({}, x, y);
console.log(z); //{a: 1, b: 2}