هناك العديد من الطرق لتحديد الفصول الدراسية في JS:
1. طريقة المصنع
نسخة الكود كما يلي:
وظيفة السيارة () {
var ocar = كائن جديد ؛
Ocar.Color = "Blue" ؛
Ocar.Doors = 4 ؛
ocar.showcolor = function () {
document.write (this.color)
} ؛
إرجاع OCAR.
}
var car1 = car () ؛
var car2 = car () ؛
عند استدعاء هذه الوظيفة ، يتم إنشاء كائن جديد ويتم تعيين جميع الخصائص والأساليب. استخدم هذه الوظيفة لإنشاء كائنين مع نفس الخصائص بالضبط. بالطبع ، يمكن لأختي تعديل هذه الطريقة عن طريق نقل المعلمات إليها.
نسخة الكود كما يلي:
وظيفة السيارة (اللون ، الباب) {
var ocar = كائن جديد ؛
OCAR.COLOR = اللون ؛
Ocar.Doors = الباب ؛
ocar.showcolor = function () {
document.write (this.color)
} ؛
إرجاع OCAR.
}
var car1 = Car ("Red" ، 4) ؛
var car2 = Car ("Blue" ، 4) ؛
car1.showcolor () // الإخراج: "أحمر"
car2.showcolor () // الإخراج: "الأزرق"
يمكنك الآن الحصول على كائنات ذات قيم مختلفة عن طريق تمرير معلمات مختلفة إلى الوظيفة.
في المثال السابق ، في كل مرة يتم فيها تسمى CAR CAR () ، يتم إنشاء ShowColor () ، مما يعني أن كل كائن له طريقة العرض الخاصة به ().
ولكن في الواقع ، يشارك كل كائن نفس الوظيفة.
على الرغم من أنه يمكن تعريف الطريقة خارج الوظيفة ، ثم عن طريق توجيه خصائص الوظيفة إلى الطريقة.
نسخة الكود كما يلي:
وظيفة العرض () {
تنبيه (this.color) ؛
}
وظيفة السيارة () {
var ocar = new Object () ؛
OCAR.COLOR = اللون ؛
Ocar.Doors = الباب ؛
Ocar.ShowColor = showcolor ؛
إرجاع OCAR.
}
ولكن هذا لا يبدو وكأنه طريقة وظيفة.
2. طريقة المنشئ
طريقة المنشئ بسيطة مثل طريقة المصنع ، كما هو موضح أدناه:
نسخة الكود كما يلي:
وظيفة السيارة (اللون ، الباب) {
this.color = اللون ؛
this.doors = الباب ؛
this.showcolor = function () {
تنبيه (this.color)
} ؛
}
var car1 = سيارة جديدة ("أحمر" ، 4) ؛
var car2 = سيارة جديدة ("Blue" ، 4) ؛
يمكنك أن ترى أن طريقة المنشئ لا تنشئ كائنات داخل الوظيفة ، والكلمة الرئيسية التي يتم استخدامها. لأنه تم إنشاء كائن عند الاتصال بالمقدم ، ويمكن استخدام هذا فقط للوصول إلى خصائص الكائن داخل الوظيفة.
الآن باستخدام جديد لإنشاء كائنات ، يبدو هكذا! لكنه نفس المصنع. كل مكالمة تنشئ طريقة خاصة بها للكائن.
3. طريقة النموذج الأولي
تستفيد هذه الطريقة من سمة النموذج الأولي للكائن. أولاً ، قم بإنشاء اسم الفصل مع وظيفة فارغة ، ثم يتم تعيين جميع السمات والأساليب إلى سمة النموذج الأولي.
نسخة الكود كما يلي:
وظيفة السيارة () {
}
car.prototype.color = "red" ؛
car.prototype.doors = 4 ؛
car.prototype.showcolor = function () {
تنبيه (this.color) ؛
}
var car1 = سيارة جديدة () ؛
var car2 = New Car () ؛
في هذا الرمز ، يتم تعريف وظيفة فارغة لأول مرة ، ثم يتم تعريف خصائص الكائن من خلال سمة النموذج الأولي. عندما يتم استدعاء هذه الوظيفة ، سيتم تعيين جميع خصائص النموذج الأولي للكائن المراد إنشاؤه على الفور. جميع الكائنات في مخزن الوظائف هذا على الرسوم () ، والتي يبدو أن النحيل تنتمي إلى نفس الكائن.
ومع ذلك ، لا تحتوي هذه الوظيفة على معلمات ، ولا يمكن تهيئة السمة عن طريق تمرير المعلمات. يجب تغيير القيمة الافتراضية للسمة بعد إنشاء الكائن.
مشكلة خطيرة للغاية في طريقة النموذج الأولي هي أنه عندما تشير السمة إلى كائن ، مثل الصفيف.
نسخة الكود كما يلي:
وظيفة السيارة () {
}
car.prototype.color = "red" ؛
car.prototype.doors = 4 ؛
car.prototype.arr = صفيف جديد ("A" ، "B") ؛
car.prototype.showcolor = function () {
تنبيه (this.color) ؛
}
var car1 = سيارة جديدة () ؛
var car2 = New Car () ؛
car1.arr.push ("CC") ؛
تنبيه (car1.arr) ؛ // الإخراج: AA ، BB ، CC
تنبيه (car2.arr) ؛ // الإخراج: AA ، BB ، CC
هنا ، نظرًا للقيمة المرجعية للمصفوفة ، تشير كلا كلا من السيارة إلى نفس الصفيف ، لذلك عند إضافة القيمة في CAR1 ، يمكنك أيضًا رؤيتها في CAR2.
الاتحاد هي طريقة يمكن أن تنشئ كائنات مثل لغات البرمجة الأخرى باستخدام النموذج المُنشئ/النموذج الأولي. إنها طريقة تستخدم المُنشئين لتحديد الخواص غير الوظيفية للكائنات وتستخدم النماذج الأولية لتحديد الكائنات.
نسخة الكود كما يلي:
وظيفة السيارة (اللون ، الباب) {
this.color = اللون ؛
this.doors = الباب ؛
this.arr = صفيف جديد ("aa" ، "bb") ؛
}
car.prototype.showcolor () {
تنبيه (this.color) ؛
}
var car1 = سيارة جديدة ("أحمر" ، 4) ؛
var car2 = سيارة جديدة ("Blue" ، 4) ؛
car1.arr.push ("CC") ؛
تنبيه (car1.arr) ؛ // الإخراج: AA ، BB ، CC
تنبيه (car2.arr) ؛ // الإخراج: AA ، BB
5. طريقة النموذج الأولي الديناميكي
تشبه طريقة النموذج الأولي الديناميكي طريقة المنشئ/النموذج الأولي المختلط. الفرق الوحيد هو الموضع المعطى لطريقة الكائن.
نسخة الكود كما يلي:
وظيفة السيارة (اللون ، الباب) {
this.color = اللون ؛
this.doors = الباب ؛
this.arr = صفيف جديد ("aa" ، "bb") ؛
if (typeof car._initialized == "غير محدد") {
car.prototype.showcolor = function () {
تنبيه (this.color) ؛
} ؛
car._initialized = true ؛
}
}
تتمثل طريقة النموذج الأولي الديناميكي في استخدام علامة لتحديد ما إذا كان النموذج الأولي قد تم تعيين طريقة. هذا يضمن إنشاء الطريقة مرة واحدة فقط
6. طريقة المصنع المختلط
يخلق معلمه الغرض مُنشئًا مزيفًا يعيد فقط حالات جديدة لكائن آخر.
نسخة الكود كما يلي:
وظيفة السيارة () {
var ocar = new Object () ؛
Ocar.Color = "Red" ؛
Ocar.Doors = 4 ؛
ocar.showcolor = function () {
تنبيه (this.color)
} ؛
إرجاع OCAR.
}
على عكس طريقة المصنع ، تستخدم هذه الطريقة المشغل الجديد.
ما ورد أعلاه هي جميع طرق إنشاء الكائنات. الطريقة الأكثر استخدامًا على نطاق واسع هي طريقة المنشئ/النموذج الأولي الهجين ، وطريقة النموذج الأولي الديناميكي تحظى بشعبية كبيرة أيضًا. تعادل وظيفيا لطريقة المنشئ/النموذج الأولي.
ما سبق هو كل شيء عن هذا المقال ، أتمنى أن تنال إعجابك.