Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จะโคลนวัตถุโดยใช้ตัวดำเนินการสเปรดใน JavaScript ได้อย่างไร


การโคลน เป็นเพียงการคัดลอกวัตถุจากตัวแปรหนึ่งไปยังอีกตัวแปรหนึ่ง การโคลนอย่างง่ายโดยใช้ ตัวดำเนินการมอบหมาย ไม่ได้ผลตามความตั้งใจของเรา เมื่อเกิดการโคลนนิ่ง การเปลี่ยนแปลงในตัวแปรใดๆ ไม่ควรสะท้อนถึงการเปลี่ยนแปลงใดๆ ในตัวแปรอื่น แต่ในกรณีของ ผู้ปฏิบัติงานที่ได้รับมอบหมาย การเปลี่ยนแปลงในตัวแปรใด ๆ จะสะท้อนให้เห็นในตัวแปรอื่นอย่างแน่นอน ดังนั้นเพื่อลดข้อเสียเปรียบนี้ 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\"}"