ECMAScript6 รองรับคลาสแล้ว แต่ไม่มีรุ่นก่อนหน้านี้รองรับคลาส แต่สามารถใช้บางวิธีในการจำลองคลาส
ชั้นเรียนใน JS เป็นทั้งประเด็นสำคัญและจุดที่ยากและมักจะรู้สึกคลุมเครือ
ก่อนอื่นฉันอยากจะเน้นจุดความรู้ที่สำคัญมากสามจุดใน JS: สิ่งนี้ต้นแบบและตัวสร้าง
มาสรุปวิธีการกำหนดคลาส (จำลอง):
1. แบบจำลองโรงงาน
ฟังก์ชั่น createObject (ชื่อ, อายุ) {var obj = วัตถุใหม่ (); obj.name = ชื่อ; obj.age = อายุ; obj.getName = function () {return this.name; - obj.getage = function () {return this.age; } return obj;} var obj2 = createObject ("wang wu", 19); console.log (obj2.getName ()); console.log (obj2.getage ()); console.log (obj2.constructor);วิธีโหมดโรงงานสร้างวัตถุ โหมดโรงงานสามารถสร้างวัตถุที่มีข้อมูลที่จำเป็นตามพารามิเตอร์ที่ยอมรับ วิธีนี้สามารถเรียกได้หลายครั้งและทุกครั้งที่ส่งคืนวัตถุที่มี 2 แอตทริบิวต์และ 2 วิธี รูปแบบของโรงงานแก้ปัญหาการสร้างวัตถุที่คล้ายกัน แต่ไม่ได้แก้ปัญหาการจดจำวัตถุนั่นคือหมวดหมู่ของวัตถุไม่สามารถกำหนดและรวมเป็นหนึ่งในวัตถุได้
2. วิธีตัวสร้าง
ฟังก์ชั่นบุคคล (ชื่อ, อายุ, งาน) {this.name = name; this.age = อายุ; this.job = Job;} person.prototype = {constructor: person, getName: function () {return this.name; }, getage: function () {return this.age; }, getJob: function () {return this.job; }} var p = บุคคลใหม่ ("ermazi", 18, "คนงาน"); console.log (p.constructor); console.log (p.getName ()); console.log (p.getage ()); console.log (p.getJob ());แม้ว่าวิธีการของตัวสร้างจะกำหนดปัญหาความเป็นเจ้าของของวัตถุและสามารถกำหนดประเภทของวัตถุได้ แต่วิธีการในตัวสร้างจะต้องสร้างขึ้นใหม่ในแต่ละวัตถุส่งผลให้เกิดปัญหาด้านประสิทธิภาพบางอย่าง
3. โหมดต้นแบบ
ฟังก์ชั่นบุคคล () {} person.prototype = {constructor: บุคคล, ชื่อ: "จางซาน", อายุ: 21, งาน: "ครู", getName: function () {return this.name; }, getJob: function () {return this.job; }} var p = บุคคลใหม่ (); console.log (p.getName ()); // Zhang San Console.log (P.GetJob ()); // teachervar p2 = บุคคลใหม่ (); p2.name = "li si"; console.log (p2.getName ()); // li siจากรหัสอินสแตนซ์เราสามารถรู้ได้ว่าอินสแตนซ์ของวัตถุสามารถเข้าถึงค่าในต้นแบบ แต่ไม่สามารถเขียนค่าในต้นแบบได้ หากแอตทริบิวต์ที่ทำซ้ำกับต้นแบบถูกกำหนดไว้ในอินสแตนซ์ของวัตถุคุณลักษณะจะบล็อกแอตทริบิวต์ในต้นแบบ แต่จะไม่เขียนใหม่
4. บรรจุภัณฑ์ (เรียกมันว่าตอนนี้)
var dog = {createDog: function () {var dog = {}; dog.name = "Wangwang"; dog.sayhello = function () {console.log ("Hello World!"); - สุนัขกลับ; }}; var dog = dog.createdog (); Dog.Sayhello ();มันคือการห่อหุ้มรหัสทั้งหมดและส่งคืนวัตถุอินสแตนซ์โดยรวมซึ่งคล้ายกับรูปแบบของโรงงาน
หลายวิธีข้างต้น (แนะนำ) ของคลาสนิยาม JS เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น