Object.assign()
วิธีนี้ใช้เพื่อคัดลอกออบเจ็กต์ต้นทางหนึ่งรายการขึ้นไปไปยังออบเจ็กต์เป้าหมาย มันเรียกใช้ getters และ setters เนื่องจากใช้ทั้ง 'get' บนแหล่งที่มาและ 'Set' ที่เป้าหมาย ส่งคืนวัตถุเป้าหมายที่มีคุณสมบัติและค่าที่คัดลอกมาจากวัตถุเป้าหมาย เมธอดนี้ไม่ส่งค่าต้นทางที่เป็นโมฆะหรือไม่ได้กำหนด
ไวยากรณ์
Object.assign(target, ...source objects);
ต้องใช้ออบเจกต์ต้นทาง และวัตถุเป้าหมายเป็นพารามิเตอร์และผลักวัตถุต้นทางเข้าไปในวัตถุเป้าหมายและแสดงวัตถุเป้าหมาย
ตัวอย่าง-1
ในตัวอย่างต่อไปนี้ คุณสมบัติจากออบเจ็กต์ต้นทาง "obj1 "," obj2 " และ "obj3 " ถูกผลักเข้าไปในวัตถุเป้าหมาย "obj " และ วัตถุเป้าหมาย ถูกส่งกลับเป็นผลลัพธ์
<html> <body> <script> var obj1 = { a: 10, b:20 }; var obj2 = { c: 30, d:40 }; var obj3 = { e: 50 }; var obj = Object.assign({}, obj1, obj2, obj3); document.write(JSON.stringify(obj)); </script> </body> </html>
ผลลัพธ์
{"a":10,"b":20,"c":30,"d":40,"e":50}
ตัวอย่าง-2
ในตัวอย่างต่อไปนี้ มี หลายอินสแตนซ์ ของ คุณสมบัติ ของวัตถุ ในกรณีนี้เมธอด Object.assign() ใช้ค่าที่กำหนดล่าสุดของคุณสมบัติ ตัวอย่างเช่น ในทั้ง 3 อ็อบเจ็กต์ "obj1 "," obj2 " และ "obj3 คุณสมบัติ 'ค ' เป็นค่าทั่วไปและค่าที่กำหนด เช่น 1,3 และ 0 ตามลำดับ ค่าของคุณสมบัติ 'c' ใน obj3 จะแทนที่ค่าอื่นๆ ที่กำหนดไว้ก่อนหน้านี้ 1 และ 3 . ดังนั้นถ้าเราดูที่ผลลัพธ์ คุณสมบัติ 'ค ' ถูกกำหนดด้วยค่า 0 .
<html> <body> <script> var obj1 = { a: 10, b:20, c:1 }; var obj2 = { b: 30, d:10, c:3 }; var obj3 = { e: 60, d:70, c:0 }; var obj = Object.assign({}, obj1, obj2, obj3); document.write(JSON.stringify(obj)); </script> </body> </html>
ผลลัพธ์
{"a":10,"b":30,"c":0,"d":70,"e":60}