แนะนำ
ต้นแบบหมายถึงประเภทของวัตถุที่สร้างขึ้นด้วยอินสแตนซ์ต้นแบบและสร้างวัตถุใหม่โดยการคัดลอกต้นแบบเหล่านี้
ข้อความ
สำหรับโหมดต้นแบบเราสามารถใช้คุณสมบัติการสืบทอดต้นแบบที่ไม่ซ้ำกันของ JavaScript เพื่อสร้างวัตถุนั่นคือวัตถุหนึ่งถูกสร้างขึ้นเป็นค่าแอตทริบิวต์ต้นแบบของวัตถุอื่น วัตถุต้นแบบนั้นใช้วัตถุที่สร้างขึ้นโดยตัวสร้างแต่ละตัวได้อย่างมีประสิทธิภาพ ตัวอย่างเช่นหากต้นแบบตัวสร้างมีแอตทริบิวต์ชื่อ (ดูตัวอย่างด้านล่าง) วัตถุที่สร้างผ่านตัวสร้างนี้จะมีแอตทริบิวต์นี้
เมื่อดูคำจำกัดความของรูปแบบต้นแบบในวรรณคดีที่มีอยู่ไม่มีจาวาสคริปต์ คุณอาจพบว่าคำอธิบายจำนวนมากเกี่ยวกับชั้นเรียน แต่ความจริงก็คือ JavaScript บนพื้นฐานของการสืบทอดต้นแบบโดยสมบูรณ์หลีกเลี่ยงแนวคิดของชั้นเรียน เราเพียงแค่คัดลอกวัตถุที่มีอยู่เพื่อสร้างวัตถุ
การสืบทอดการสืบทอดต้นแบบที่แท้จริงถูกเสนอเป็นมาตรฐาน ECMASCRIPT5 รุ่นล่าสุด วิธีการสร้างวัตถุใช้เพื่อสร้างวัตถุดังกล่าว วิธีนี้สร้างวัตถุที่ระบุ ต้นแบบของวัตถุมีวัตถุที่ระบุ (นั่นคือวัตถุพารามิเตอร์แรกที่ส่งผ่านโดยวิธีการ) และยังสามารถมีแอ็ตทริบิวต์ที่ระบุตัวเลือกอื่น ๆ ตัวอย่างเช่น Object.create (ต้นแบบ, OptionaldescriptorObjects) คุณยังสามารถเห็นการใช้งานนี้ในตัวอย่างต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
// เนื่องจากไม่ใช่ตัวสร้างจึงไม่จำเป็นต้องเป็นตัวพิมพ์ใหญ่
var somecar = {
ไดรฟ์: ฟังก์ชัน () {}
ชื่อ: 'มาสด้า 3'
-
// สร้างรถใหม่ด้วย object.create x
var othercar = object.create (somecar);
othercar.name = 'Toyota Kami';
Object.create ทำงานคุณสืบทอดโดยตรงจากวัตถุอื่น การใช้พารามิเตอร์ที่สองของวิธีนี้คุณสามารถเริ่มต้นคุณสมบัติเพิ่มเติม ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
Var Vehicle = {
getModel: function () {
console.log ('แม่พิมพ์ของยานพาหนะคือ:' + this.model);
-
-
var car = object.create (ยานพาหนะ {
'id': {
ค่า: my_global.nextid ()
enumerable: true // default writable: false, configrable: false
-
'แบบอย่าง': {
ค่า: 'ฟอร์ด',
enumerable: จริง
-
-
ที่นี่คุณสามารถใช้วัตถุตามตัวอักษรเพื่อส่งผ่านในพารามิเตอร์ที่สองของ Object.create เพื่อใช้วัตถุตามตัวอักษรเพื่อป้อนคุณสมบัติเพิ่มเติมที่จะเริ่มต้นและไวยากรณ์ของมันเหมือนกับ Object.defineProperties หรือ Object.defineProperty ช่วยให้คุณสามารถตั้งค่าคุณสมบัติของคุณสมบัติเช่น enumerable, wringable หรือกำหนดค่าได้
หากคุณต้องการใช้โหมดต้นแบบด้วยตัวคุณเองแทนที่จะใช้ Object.create โดยตรง คุณสามารถใช้รหัสเช่นต่อไปนี้เพื่อใช้ตัวอย่างข้างต้น:
การคัดลอกรหัสมีดังนี้:
VAR VehiclePrototype = {
init: function (carmodel) {
this.model = carmodel;
-
getModel: function () {
console.log ('แม่พิมพ์ยานพาหนะคือ:' + this.model);
-
-
ฟังก์ชั่นยานพาหนะ (รุ่น) {
ฟังก์ชั่น f () {};
f.prototype = ยานพาหนะ prototype;
var f = new f ();
f.init (รุ่น);
กลับ f;
-
var car = ยานพาหนะ ('Ford Escort');
car.getModel ();
สรุป
การใช้โหมดต้นแบบใน JavaScript นั้นแพร่หลาย โหมดอื่น ๆ อีกมากมายก็ขึ้นอยู่กับต้นแบบดังนั้นฉันจะไม่พูดอะไรมากมาย สิ่งที่คุณควรให้ความสนใจที่นี่คือปัญหาของการคัดลอกตื้นและสำเนาลึกเพื่อหลีกเลี่ยงปัญหาการอ้างอิง