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

เมธอด JavaScript:Object.assign()

จาวาสคริปต์มีคลาสอ็อบเจ็กต์ที่มีเมธอดทุกประเภทที่เราสามารถใช้จัดการอ็อบเจ็กต์เหล่านั้นได้ ในบทความนี้ เราจะมาดูเมธอด Object.assign() และสาธิตวิธีใช้งาน

เบื้องหลังเล็กน้อย

เพื่อเป็นการเตือนความจำ วัตถุเป็นชนิดข้อมูลใน JavaScript ซึ่งคล้ายกับพจนานุกรมใน Python ที่มีสิ่งที่เราเรียกว่าคู่ของคีย์:ค่า สมมุติว่าเรามีวัตถุ เรียกมันว่าแฮร์รี่ อาจมีคู่คีย์:ค่าที่มีลักษณะดังนี้:

let Harry = {
 	firstName: 'Harry',
 	lastName: 'Potter',
 	age: 11,
 	house: 'Gryffindor',
 	pet: {
   	  name: 'Hedwig',
        animal: 'owl'
 	}
};

กฎพื้นฐานของธีมในสถานการณ์นี้คือชื่อคุณสมบัติทางด้านซ้ายของโคลอนเป็นกุญแจสำคัญ และสิ่งที่อยู่ทางขวาคือค่า คีย์และค่าส่วนใหญ่ค่อนข้างตรงไปตรงมา – สิ่งเดียวที่อาจดูน่าเบื่อคือคุณสมบัติสุดท้าย:สัตว์เลี้ยง สัตว์เลี้ยงยังคงเป็นกุญแจสำคัญในกรณีนี้ อย่างไรก็ตาม ค่านั้นเป็นอ็อบเจ็กต์ที่มีคู่คีย์:ค่าอีกสองคู่ นี่คือสิ่งที่เราเรียกว่าวัตถุที่ซ้อนกัน

Object.assign(target, …sourceObjs);

มีเมธอด Object ชื่อ assign() ที่สามารถใช้เพื่อนำออบเจ็กต์ต้นทางหนึ่งออบเจ็กต์ขึ้นไปและคัดลอกไปยังออบเจกต์เป้าหมาย ไปดูโค้ดกันเลยดีกว่า:

let hpChar = {
 firstName: 'Harry',
 lastName: 'Potter',
 age: 11,
 house: 'Gryffindor',
 pet: {
   name: 'Hedwig',
   animal: 'owl'
 }
}
 
Object.assign({}, hpChar);
console.log(hpChar, '\n');
Object.assign(hpChar, {
 	firstName: 'Hermione',
 	lastName: 'Grainger',
 	pet: {
   		name: 'Crookshanks',
   		animal: 'cat'
 	}
}
 
);
 
console.log(hpChar)

มาดูโค้ดกัน เราเริ่มต้นด้วยวัตถุที่เรียกว่า hpChar hpChar นี้มีชื่อ นามสกุล อายุ บ้าน และทรัพย์สินของสัตว์เลี้ยง ทรัพย์สินสัตว์เลี้ยงนั้นเป็นวัตถุและมีคีย์และค่าบางอย่างในตัวเอง

ต่อไป เรามีตัวอย่างวิธีการแรกของเราที่เราจะพูดถึง Object.assign รับพารามิเตอร์ตั้งแต่สองตัวขึ้นไป อันแรก เสมอ วัตถุเป้าหมายที่คุณต้องการกำหนดค่าให้ ในกรณีนี้ มันคือวัตถุที่ว่างเปล่า

พารามิเตอร์ที่สองคือวัตถุของเราที่กำหนดไว้ข้างต้น นี่คือแหล่งข้อมูลที่เราจะนำไปใช้เพื่อกำหนดให้กับวัตถุเป้าหมาย (พารามิเตอร์แรกของเรา)

บรรทัดต่อไปนี้บันทึกผลลัพธ์ลงในคอนโซล:

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

{ firstName: 'Harry',
  lastName: 'Potter',
  age: 11,
  house: 'Gryffindor',
  pet: { name: 'Hedwig', animal: 'owl' } }

ไม่มีอะไรแตกต่างกันมากใช่มั้ย? นั่นเป็นเพราะเรากำหนด hpChar ให้กับวัตถุว่าง - เราทำการโคลนวัตถุเป็นหลัก เกิดอะไรขึ้นถ้าเราทำอีกครั้ง แต่เปลี่ยนค่าบางอย่าง? คราวนี้เรามาแทนที่วัตถุว่างด้วยวัตถุ hpChar แทน - นี่จะเป็นเป้าหมายของเราในครั้งนี้ มาเปลี่ยนค่าบางค่าในพารามิเตอร์ที่สองกัน รู้สึกอิสระที่จะเล่นกับค่าต่างๆ ตราบใดที่คุณยังคงกุญแจไว้เหมือนเดิม

นี่คือค่าที่ฉันจะแทนที่ หากไม่จำเป็นต้องเปลี่ยนค่าในวัตถุเป้าหมาย คุณไม่จำเป็นต้องเรียกค่านั้นอย่างชัดเจนในวัตถุต้นทาง

Object.assign(hpChar, {
 	firstName: 'Hermione',
 	lastName: 'Grainger',
 	pet: {
   		name: 'Crookshanks',
   		animal: 'cat'
 	}
}
 
);

ครั้งที่สองที่เราบันทึกผลลัพธ์ในคอนโซล ผลลัพธ์จะส่งคืนวัตถุเป้าหมาย โดยเขียนทับคุณสมบัติด้วยค่าใหม่ ตอนนี้คอนโซลของเรามีลักษณะดังนี้:

{ firstName: 'Hermione',
  lastName: 'Grainger',
  age: 11,
  house: 'Gryffindor',
  pet: { name: 'Crookshanks', animal: 'cat' } }

นี่คือลักษณะการรวมสองอ็อบเจ็กต์ที่มีคุณสมบัติเหมือนกัน แล้วถ้าเราจะรวมสามวัตถุที่มีคุณสมบัติต่างกันล่ะ? คุณคาดหวังว่าจะเกิดอะไรขึ้น?

var obj1 = {
 foo: 1
}
 
var obj2 = {
 bar: 2
}
 
var obj3 = {
 baz: 3
}
 
Object.assign(obj1, obj2, obj3)
 
console.log(obj1);

Obj1 เป็น obj เป้าหมายของเรา Obj2 และ obj3 เป็นวัตถุต้นทางของเรา สิ่งเหล่านี้จะรวมเข้ากับวัตถุเป้าหมายของเรา เนื่องจากไม่มีคุณสมบัติทับซ้อนกัน คุณสมบัติทั้งหมดจะถูกรวมเป็น obj1 ด้วยค่าที่เกี่ยวข้อง

{ foo: 1, bar: 2, baz: 3 }

ที่นั่นคุณมีมัน! การนำไปใช้งานของ Object.assign() เมื่อคุณเข้าใจแนวคิดที่นี่แล้ว คุณก็เข้าใกล้การเรียนรู้กรอบงาน JavaScript เข้าไปอีกขั้นแล้ว!

พร้อมเพิ่มเติมไหม

ดูบทแนะนำเหล่านี้เพื่อศึกษาต่อ…

JavaScript Object.keys()

คำแนะนำทีละขั้นตอนสำหรับ JavaScript ให้

ประเภทของจาวาสคริปต์

JavaScript String ประกอบด้วย:คำแนะนำทีละขั้นตอน

ตัวแปร JavaScript