อธิบายบันทึก JavaScript?

Xthibay Banthuk Javascript



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