การโคลน เป็นเพียงการคัดลอกวัตถุจากตัวแปรหนึ่งไปยังอีกตัวแปรหนึ่ง การโคลนอย่างง่ายโดยใช้ ตัวดำเนินการมอบหมาย ไม่ได้ผลตามความตั้งใจของเรา เมื่อเกิดการโคลนนิ่ง การเปลี่ยนแปลงในตัวแปรใดๆ ไม่ควรสะท้อนถึงการเปลี่ยนแปลงใดๆ ในตัวแปรอื่น แต่ในกรณีของ ผู้ปฏิบัติงานที่ได้รับมอบหมาย การเปลี่ยนแปลงในตัวแปรใด ๆ จะสะท้อนให้เห็นในตัวแปรอื่นอย่างแน่นอน ดังนั้นเพื่อลดข้อเสียเปรียบนี้ ES6 ได้จัดเตรียมตัวดำเนินการสเปรด .
ตัวอย่าง
ในตัวอย่างต่อไปนี้ การโคลน เสร็จสิ้นโดยใช้ ตัวดำเนินการสเปรด . ดังนั้นการเปลี่ยนแปลงในตัวแปรหนึ่งจึงสะท้อนให้เห็นในอีกตัวแปรหนึ่ง
<html> <body> <script> var org = {org1 : "Serveneedy", org2 : "Praveenlatha", org3 : "Redcross" }; document.write(JSON.stringify("without change org :" + " "+ JSON.stringify(org))); var neworg = org; org.org1 = "gatesfoundation"; document.write("</br>"); document.write(JSON.stringify("with change org :" + " "+ JSON.stringify(org))); document.write("</br>"); document.write(JSON.stringify("change also reflected in neworg :" +" "+JSON.stringify(neworg))); </script> </body> </html>
ผลลัพธ์
"without change org : {\"org1\":\"Serveneedy\",\"org2\":\"Praveenlatha\",\"org3\":\"Redcross\"}" "with change org : {\"org1\":\"gatesfoundation\",\"org2\":\"Praveenlatha\",\"org3\":\"Redcross\"}" "change also reflected in neworg :{\"org1\":\"gatesfoundation\",\"org2\":\"Praveenlatha\",\"org3\":\"Redcross\"}"
ตัวอย่าง
ในตัวอย่างต่อไปนี้ ตัวดำเนินการสเปรด ถูกใช้เพื่อเปลี่ยน วัตถุเดิม ไม่สะท้อนในวัตถุที่ลอกแบบมา
<html> <body> <script> var org = {org1 : "Serveneedy", org2 : "Praveenlatha", org3 : "Redcross" }; document.write(JSON.stringify("without change org :" + " "+ JSON.stringify(org))); var neworg = {...org}; org.org1 = "gatesfoundation"; document.write("</br>"); document.write(JSON.stringify("with change org :" + " "+ JSON.stringify(org))); document.write("</br>"); document.write(JSON.stringify("change also reflected in neworg" +" "+JSON.stringify(neworg))); </script> </body> </html>
ผลลัพธ์
"without change org : {\"org1\":\"Serveneedy\",\"org2\":\"Praveenlatha\",\"org3\":\"Redcross\"}" "with change org : {\"org1\":\"gatesfoundation\",\"org2\":\"Praveenlatha\",\"org3\":\"Redcross\"}" "change also reflected in neworg : {\"org1\":\"Serveneedy\",\"org2\":\"Praveenlatha\",\"org3\":\"Redcross\"}"