JavaScript มาพร้อมกับประเภทข้อมูลที่ไม่ใช่แบบดั้งเดิม “ วัตถุ ” ซึ่งได้มาจากความช่วยเหลือของประเภทข้อมูลดั้งเดิม (ในตัว) “วัตถุ” ทำหน้าที่เป็นอินสแตนซ์ในการเข้าถึงสมาชิก JavaScript ใช้เพื่อเรียกใช้ฟังก์ชัน JavaScript เพื่อทำงานเฉพาะที่ประเภทข้อมูลดั้งเดิมไม่สามารถทำได้ อย่างไรก็ตาม ข้อเสียอย่างหนึ่งของข้อมูลประเภทนี้คือการดำเนินการเปรียบเทียบบนพื้นฐานของเอกลักษณ์ ไม่ใช่เนื้อหา เพื่อแก้ไขปัญหานี้ JavaScript นำเสนอประเภทข้อมูลใหม่ “ บันทึก ” เนื่องจากเปรียบเทียบอย่างเคร่งครัดบนพื้นฐานของเนื้อหาไม่ใช่ตัวตน
คู่มือนี้จะอธิบายเกี่ยวกับบันทึก JavaScript
“บันทึก” คืออะไร?
จาวาสคริปต์ “ บันทึก ” เป็นประเภทดั้งเดิมใหม่ (สตริง ตัวเลข สัญลักษณ์) ที่คล้ายกับในตัว . ข้อแตกต่างเพียงอย่างเดียวคือ 'บันทึก' นั้นเปลี่ยนรูปไม่ได้เท่านั้น กล่าวคือ ค่าของคีย์ไม่สามารถเปลี่ยนแปลงได้เมื่อเริ่มต้นแล้ว
ไวยากรณ์
ไวยากรณ์ของ “ บันทึก ” เหมือนกับ “วัตถุ” แต่ต้องมี “ # สัญลักษณ์ (แฮช)” ก่อนเครื่องหมายวงเล็บปีกกาซึ่งแสดงว่าเป็น “บันทึก”:
const recoredName = #{
/*
คีย์: ค่า
/*
}
มาใช้ไวยากรณ์ที่ระบุไว้ข้างต้นเพื่อสร้างบันทึกใหม่
วิธีการสร้างบันทึก?
หากต้องการสร้างระเบียน ให้ระบุสัญลักษณ์ “#(แฮช)” ที่จุดเริ่มต้นของวงเล็บปีกกาตามที่แสดงในบล็อกโค้ดด้านล่าง:
คนที่เหลือ = #{
ชื่อเล่น: 'หรือ' ,
ชื่อ: 'อุสมาน' ,
อายุ: ยี่สิบเอ็ด ,
}
คอนโซล.ล็อก ( บุคคล.fname )
คอนโซล.ล็อก ( ชื่อบุคคล )
คอนโซล.ล็อก ( คน.อายุ )
ในบล็อกรหัสด้านบน:
-
- “ บุคคล ” หมายถึง “บันทึก” ใหม่ที่มีคีย์ต่อไปนี้คือ “fname”, “lname” และ “age”
- ต่อไป “ คอนโซล บันทึก() ” วิธีการแสดงค่าคีย์ 'บุคคล' ทีละค่าตามลำดับ
บันทึก: ผู้ใช้ยังสามารถระบุเนื้อหา 'บันทึก' ในหนึ่งบรรทัดดังนี้:
คนที่เหลือ = #{ชื่อ: 'Ali', ชื่อ: 'Usman', อายุ: 21}
เอาต์พุต
จะเห็นได้ว่าผลลัพธ์จะแสดงค่าคีย์ทั้งหมดของบันทึก 'บุคคล' ที่สร้างขึ้น
ข้อ จำกัด ของบันทึก
'บันทึก' ไม่ยอมรับ 'อาร์เรย์' และ 'วัตถุ' เป็นคีย์ของมัน หากผู้ใช้ส่งต่อไปยังเรกคอร์ด คอมไพเลอร์จะสร้าง “ TypeError '. บล็อกรหัสต่อไปนี้แสดงให้เห็นจริง:
const newRecord = #{arr: [ 'HTML' , 'ซีเอสเอส' , 'จาวาสคริปต์' ]
}
คอนโซล.ล็อก ( คน.arr )
ในบรรทัดรหัสด้านบน:
-
- “ สถิติใหม่ ” เริ่มต้นอาร์เรย์ชื่อ “arr” เป็นคีย์ของมัน
- ต่อไป “ คอนโซล บันทึก() ” แสดงค่าคีย์ “arr” ที่ระบุใน “newRecord”
เอาต์พุต
คอนโซลแสดง 'TypeError (ผ่านประเภทที่ไม่คาดคิด)' เนื่องจาก 'ระเบียน' ไม่ยอมรับอาร์เรย์เป็นคีย์
ทำความเข้าใจบันทึก JavaScript โดยใช้ตัวอย่าง
ส่วนนี้ประกอบด้วยการใช้ 'บันทึก' ในทางปฏิบัติด้วยความช่วยเหลือของตัวอย่างที่ให้มา
เริ่มจากตัวอย่างแรกกันก่อน
ตัวอย่างที่ 1: เร็กคอร์ดไม่สามารถเปลี่ยนแปลงได้อย่างมาก
จาวาสคริปต์ “ บันทึก ” เป็นประเภทดั้งเดิมที่ไม่เปลี่ยนรูปแบบอย่างลึกซึ้ง “ไม่เปลี่ยนรูปอย่างลึกซึ้ง” หมายถึงค่าคีย์ทั้งหมดของเรกคอร์ดไม่สามารถแก้ไขหรือเปลี่ยนแปลงได้ไม่ว่าในระดับใดก็ตามเมื่อตั้งค่าแล้ว ประเภท 'ดั้งเดิม' หมายถึงประเภทข้อมูล JavaScript พื้นฐานทั้งหมด เช่น สตริง ตัวเลข ค่าว่าง ไม่ได้กำหนด และอื่นๆ อีกมากมาย
บล็อกรหัสต่อไปนี้แสดงแนวคิดที่ระบุไว้ในทางปฏิบัติ:
const myRecord = #{ชื่อ: 'หรือ' ,
อายุ: ยี่สิบเอ็ด ,
}
myRecord.name= 'ฮารุณ'
ในบล็อกโค้ดด้านบน ' บันทึกของฉัน ' สำคัญ ' ชื่อ ค่า ” ถูกแก้ไขหลังจากการเริ่มต้น
เอาต์พุต
สามารถสังเกตได้ว่าคอมไพเลอร์แสดง 'TypeError' ในการแก้ไขค่าคีย์ 'newRecord'
ตัวอย่างที่ 2: บันทึกเปรียบเทียบ
ข้อได้เปรียบหลักของ 'บันทึก' คือมีการเปรียบเทียบตามคุณค่า ไม่ใช่ตัวตน ในขณะที่ “วัตถุ” เปรียบเทียบตามอัตลักษณ์ ไม่ใช่คุณค่า ถ้าค่าเร็กคอร์ดสองค่าเท่ากัน คอมไพเลอร์จะดึงข้อมูลเป็นค่าจริง
มาดูกันจริงด้วยความช่วยเหลือของโค้ดที่กำหนด:
const myRecord = #{ชื่อ: 'หรือ' ,
อายุ: ยี่สิบเอ็ด ,
}
คอนโซล.ล็อก ( บันทึกของฉัน === #{
ชื่อ: 'หรือ' ,
อายุ: ยี่สิบเอ็ด ,
} ) ;
ที่นี่ ข้อมูลโค้ดด้านบนสร้างสองบันทึกที่เปรียบเทียบด้วยความช่วยเหลือของ ' ความเท่าเทียมกันอย่างเคร่งครัด (===)” ตัวดำเนินการ
เอาต์พุต
เอาต์พุตจะคืนค่าเป็น “ จริง ” ค่าบูลีนซึ่งหมายถึงตัวดำเนินการที่ระบุ เช่น “เรกคอร์ด” มีค่าเท่ากัน
ตัวอย่างที่ 3: แปลงบันทึกเป็นวัตถุ
JavaScript “Records” ยังสามารถแปลงเป็นประเภทข้อมูล “Object” ด้วยความช่วยเหลือของตัวสร้าง “Object” นี่คือการนำไปใช้จริง:
อนุญาต บันทึกของฉัน = #{ หนึ่ง: 1 สอง: 2 }คอนโซล.ล็อก ( วัตถุ ( บันทึกของฉัน ) )
คอนโซล.ล็อก ( ประเภทของ myRecord )
ในบรรทัดโค้ดด้านบน:
-
- ครั้งแรก “ lconsole.and() ” วิธีการใช้ตัวสร้าง 'วัตถุ' เพื่อแปลง ' บันทึกของฉัน ” เป็น “วัตถุ
- เมธอด “console.log()” ที่สองใช้ “ ประเภทของ ” คีย์เวิร์ดเพื่อตรวจสอบประเภทของ “myRecord”
เอาต์พุต
ผลลัพธ์จะแสดง 'newRecord' ที่แปลงเป็น ' วัตถุ ” ซึ่งยืนยันว่า 'newRecord' แปลงเป็น 'วัตถุ' เรียบร้อยแล้ว
ตัวอย่างที่ 4: แปลงวัตถุเป็นบันทึก
ผู้ใช้ยังสามารถแปลง 'วัตถุ' เป็น 'บันทึก' เพื่อวัตถุประสงค์ในการเปรียบเทียบด้วยความช่วยเหลือของ ' บันทึก() ' วิธี. ลงมือทำจริง:
อนุญาต myObj = { หนึ่ง: 1 , สอง: 2 }อนุญาต myRecord = บันทึก ( myObj )
คอนโซล.ล็อก ( บันทึกของฉัน )
ตอนนี้ข้อมูลโค้ดด้านบนใช้ ' บันทึก() ” วิธีการแปลงวัตถุ “myObj” ให้เป็น “myRecord”
เอาต์พุต
ผลลัพธ์แสดงการแปลงวัตถุ “myObj” เป็นเนื้อหา “myRecord” เรียบร้อยแล้ว
ตัวอย่างที่ 5: สร้างบันทึกใหม่จากบันทึกที่มีอยู่
ตามที่กล่าวไว้ในตัวอย่างแรก “บันทึก” นั้นเปลี่ยนรูปไม่ได้ กล่าวคือ ไม่สามารถแก้ไขค่าคีย์ได้ อย่างไรก็ตาม ผู้ใช้สามารถสร้าง 'บันทึก' ใหม่จาก 'บันทึก' ที่มีอยู่ควบคู่ไปกับการเพิ่มค่าอื่นๆ บางค่าได้
ทำตามข้อมูลโค้ดที่กำหนดเพื่อสร้างบันทึกใหม่จากข้อมูลที่มีอยู่:
อนุญาต บันทึกเก่า = #{A: 1, B: 2 };อนุญาต บันทึกใหม่ = #{ ...บันทึกของฉัน, C: 3, D:4}
คอนโซล.ล็อก ( สถิติใหม่ )
ในรหัส JavaScript ด้านบน:
-
- “ oldRecord ” หมายถึงเรกคอร์ดที่มีอยู่ซึ่งมีค่าคีย์สองค่า
- ถัดไป “ สถิติใหม่ ” สอดคล้องกับเรกคอร์ดใหม่ที่สร้างขึ้นด้วยความช่วยเหลือของ “เรกคอร์ดเก่า” ที่มีอยู่ และโดยการเพิ่มค่าคีย์ที่ระบุใหม่
- สุดท้ายนี้ “ คอนโซล บันทึก() ” แสดงบันทึกที่สร้างขึ้นใหม่ชื่อ “newRecord”
เอาต์พุต
เอาต์พุตจะแสดงค่าคีย์ทั้งหมดของเรกคอร์ดที่สร้างขึ้นใหม่
ตัวอย่างที่ 6: เข้าถึงบันทึกโดยใช้วิธี “Object.keys()”
ผู้ใช้สามารถใช้ JavaScript ในตัว “ คีย์ () ” วิธีการของ “ วัตถุ ” เพื่อเข้าถึงคีย์ของบันทึก ในสถานการณ์สมมตินี้ ใช้เพื่อเข้าถึงคีย์ “myRecord”:
อนุญาต บันทึกของฉัน = #{A: 1, B: 2 };อนุญาต recordKeys = Object.keys ( บันทึกของฉัน ) ;
คอนโซล.ล็อก ( บันทึกคีย์ )
ข้อมูลโค้ดด้านบนใช้ ' Object.keys() ” วิธีการเข้าถึงคีย์ทั้งหมดที่มีอยู่ใน “myRecord”
เอาต์พุต
เอาต์พุตจะแสดงคีย์ทั้งหมดของ “myRecord” ในรูปแบบอาร์เรย์และรวมถึงดัชนีในรูปแบบคู่คีย์-ค่า
บทสรุป
จาวาสคริปต์ “ บันทึก ” เป็นประเภทข้อมูลระดับสูงที่ไม่สามารถเปลี่ยนรูปได้ ทำงานคล้ายกับ 'วัตถุ' แต่ข้อแตกต่างที่สำคัญคือสามารถเปลี่ยนแปลงหรืออัปเดตค่าได้เมื่อตั้งค่าแล้ว ต้องมีสัญลักษณ์ “#(แฮช)” ก่อนวงเล็บปีกกาสำหรับการประกาศ มิฉะนั้นจะทำหน้าที่เป็นวัตถุ คู่มือนี้อธิบายโดยสังเขปเกี่ยวกับประเภทข้อมูล JavaScript Records