บทความนี้อธิบายวิธีการใช้งานของคลาสและอินสแตนซ์ใน JavaScript แบ่งปันสำหรับการอ้างอิงของคุณ รายละเอียดมีดังนี้:
ไม่มีแนวคิดเกี่ยวกับชั้นเรียนของผู้ปกครองชั้นเด็กหรือชั้นเรียนหรืออินสแตนซ์ใน JavaScript ทุกอย่างขึ้นอยู่กับห่วงโซ่ต้นแบบเพื่อให้ได้มรดก เมื่อมองหาคุณสมบัติของวัตถุ JavaScript จะสำรวจห่วงโซ่ต้นแบบขึ้นไปจนกว่าจะพบคุณสมบัติที่สอดคล้องกัน มีหลายวิธีที่สามารถทำให้ JavaScript จำลองแนวคิดของชั้นเรียนและอินสแตนซ์
1. ใช้ตัวสร้างโดยตรงเพื่อสร้างวัตถุและใช้สิ่งนี้เพื่ออ้างถึงอินสแตนซ์ของวัตถุภายในตัวสร้าง
คัดลอกรหัสดังนี้: function iment () {
this.name = "Animal";
-
Animal.prototype.makesound = function () {
console.log ("เสียงสัตว์");
-
[การทำงาน]
VAR Animal1 = สัตว์ใหม่ ();
Animal1.name;
'สัตว์'
Animal1.Makesound ();
เสียงสัตว์
ลองดูตัวอย่างอื่น:
คัดลอกรหัสดังนี้: จุดฟังก์ชัน (x, y) {
this.x = x;
this.y = y;
-
point.prototype = {
วิธีการที่ 1: function () {console.log ("method1"); -
Method2: function () {console.log ("method2"); -
-
{method1: [ฟังก์ชั่น], method2: [function]}
var point1 = จุดใหม่ (10, 20);
Point1.Method1 ();
วิธีการที่ 1
Point1.Method2 ();
วิธีการ 2
ดังที่ได้ระบุไว้ก่อนอื่นระบุแอตทริบิวต์ต้นแบบของวัตถุคอนสตรัคเตอร์ จากนั้นอินสแตนซ์ใหม่ของวัตถุคุณสามารถเรียกวิธีการที่ระบุไว้ในต้นแบบ
2. ใช้ method object.create () เพื่อสร้างวัตถุ
คัดลอกรหัสดังนี้: var iment = {
ชื่อ: "สัตว์",
Makeound: function () {console.log ("เสียงสัตว์"); -
-
var iment2 = object.create (สัตว์);
Animal2.name;
'สัตว์'
console.log (Animal2.name);
สัตว์
Animal2.makesound ();
เสียงสัตว์
วิธีนี้ง่ายกว่าวิธีตัวสร้าง แต่ไม่สามารถใช้แอตทริบิวต์ส่วนตัวและวิธีการส่วนตัวและข้อมูลไม่สามารถใช้ร่วมกันระหว่างวัตถุอินสแตนซ์ดังนั้นการจำลองคลาสจึงยังไม่ครอบคลุมเพียงพอ
3. วิธีการมินิมัลลิสต์เสนอโดยโปรแกรมเมอร์ชาวดัตช์ Gabor de Mooij การใช้งานแนะนำ
คัดลอกรหัสดังนี้: var iment = {
init: function () {
var iment = {};
Animal.name = "Animal";
Animal.makesound = function () {console.log ("Animal Sound"); -
สัตว์กลับมา;
-
-
var iment3 = iment.init ();
Animal3.name;
'สัตว์'
Animal3.makesound ();
เสียงสัตว์
โดยไม่ต้องใช้ต้นแบบและสิ่งนี้คุณจะต้องปรับแต่งตัวสร้าง init เท่านั้น การใช้งานที่สืบทอดมานั้นง่ายมาก
คัดลอกรหัสดังนี้: var cat = {
init: function () {
var cat = iment.init ();
cat.name2 = "cat";
cat.makesound = function () {console.log ("cat sound"); -
cat.sleep = function () {console.log ("cat sleep"); -
คืนแมว;
-
-
var cat = cat.init ();
cat.name; // 'สัตว์'
cat.name2; // 'แมว'
cat.makesound (); // คล้ายกับวิธีการโอเวอร์โหลด
เสียงแมว
cat.sleep ();
แมวนอนหลับ
การใช้คุณสมบัติส่วนตัวและวิธีการส่วนตัว:
คัดลอกรหัสดังนี้: var iment = {
init: function () {
var iment = {};
var sound = "เสียงสัตว์ส่วนตัว"; // คุณลักษณะส่วนตัว
Animal.makesound = function () {console.log (เสียง); -
สัตว์กลับมา;
-
-
var iment4 = iment.init ();
สัตว์ส่งเสียง; // แอตทริบิวต์ส่วนตัวที่ไม่ได้กำหนดสามารถอ่านได้ผ่านวิธีการของวัตถุเท่านั้น
สัตว์ส่งเสียง; // แอตทริบิวต์ส่วนตัวที่ไม่ได้กำหนดสามารถอ่านได้ผ่านวิธีการของวัตถุเท่านั้น
Animal4.makesound ();
เสียงสัตว์ส่วนตัว
ตราบใดที่คุณสมบัติและวิธีการที่ไม่ได้กำหนดไว้ในวัตถุสัตว์นั้นเป็นส่วนตัวพวกเขาไม่สามารถเข้าถึงได้โดยโลกภายนอก
การแบ่งปันข้อมูลสามารถทำได้ระหว่างคลาสและอินสแตนซ์
คัดลอกรหัสดังนี้: var iment = {
เสียง: "เสียงสัตว์ทั่วไป",
init: function () {
var iment = {};
Animal.Commonsound = function () {console.log (iment.sound); -
Animal.changesound = function () {iment.sound = "เสียงสัตว์ทั่วไปเปลี่ยนไป"; -
สัตว์กลับมา;
-
-
VAR Animal5 = Animal.init ();
var iment6 = iment.init ();
สัตว์ส่งเสียง; // ถือได้ว่าเป็นแอตทริบิวต์คลาส
'เสียงสัตว์ทั่วไป'
Animal5. เสียง; // วัตถุอินสแตนซ์ไม่สามารถเข้าถึงแอตทริบิวต์คลาส
ไม่ได้กำหนด
Animal6.Sound;
ไม่ได้กำหนด
Animal5.Commonsound ();
เสียงสัตว์ทั่วไป
Animal6.Commonsound ();
เสียงสัตว์ทั่วไป
Animal5. การเปลี่ยนแปลง (); // แก้ไขคุณสมบัติของคลาส
ไม่ได้กำหนด
สัตว์ส่งเสียง;
'เสียงสัตว์ทั่วไป'
Animal5.Commonsound ();
เสียงสัตว์ทั่วไป
Animal6.Commonsound ();
เสียงสัตว์ทั่วไป
ตัวอย่างเช่น iment.sound เป็นคุณลักษณะที่ใช้ร่วมกันของคลาสและอินสแตนซ์ซึ่งถือได้ว่าเป็นคุณลักษณะของคลาสและวิธีการเรียน
หากอินสแตนซ์เปลี่ยนแอตทริบิวต์ทั่วไปแอตทริบิวต์ทั่วไปของคลาสและอินสแตนซ์อื่น ๆ จะถูกแก้ไขเช่นกัน
โดยสรุปมันเป็นแนวคิดและการใช้งานของชั้นเรียนและอินสแตนซ์ที่จำลองใน JavaScript
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน