كل شيء في JavaScript هو كائن: سلسلة ، صفيف ، قيمة ، وظيفة ، إلخ. لا يوجد مفهوم في JS ،
ولكن يمكننا استخدام خصائص JS النحوية لإنشاء كائنات مع فكرة الفصل.
الطريقة الأصلية
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
var obj = new Object () ؛
OBJ.Name = "Koji" ؛
obj.age = 21 ؛
obj.showname = function () {// إضافة طريقة إلى الكائن
تنبيه (this.name) ؛
}
obj.showage = function () {
تنبيه (this.age) ؛
}
obj.showname () ؛
obj.showage () ؛
</script>
تقوم الطريقة أعلاه بإنشاء كائن من خلال الكلمة الرئيسية الجديدة ، ثم تضيف خصائص وطرق خصائص اللغة الديناميكية وفقًا لـ JS.
إنشاء كائن. من بينها ، هذا كائن يدعو الطريقة.
المشكلة بهذه الطريقة هي أنه إذا كنت بحاجة إلى إنشاء كائن عدة مرات ، فيجب تكرار الكود عدة مرات ، وهو ما لا يفضي إلى إعادة استخدام الكود.
طريقة المصنع
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
وظيفة createObj () {
var obj = كائن جديد () ؛
obj.name = "koji" ؛
obj.age = 21 ؛
obj.showname = function () {
تنبيه (this.name) ؛
}
obj.showage = function () {
تنبيه (this.age) ؛
}
إرجاع OBJ
}
var obj1 = createObj () ؛
var obj2 = createObj () ؛
OBJ1.SHOWNAME () ؛
OBJ2.Showage () ؛
</script>
تعمل هذه الطريقة على تحسين معدل إعادة استخدام التعليمات البرمجية ، ويمكن أيضًا تغيير طريقة المصنع وتمرير تعيين المعلمة.
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
وظيفة createObj (الاسم ، العمر) {// عند إنشاء كائنات ، يمكن تمرير معلمة التهيئة
var obj = كائن جديد () ؛
obj.name = الاسم ؛
obj.age = العمر ؛
obj.showname = function () {
تنبيه (this.name) ؛
}
obj.showage = function () {
تنبيه (this.age) ؛
}
إرجاع OBJ
}
var obj1 = createObj ("koji" ، 22) ؛
var obj2 = createObj ("luo" ، 21) ؛
OBJ1.SHOWNAME () ؛
OBJ1.Showage () ؛
OBJ2.Showname () ؛
OBJ2.Showage () ؛
</script>
على الرغم من أن الطريقة المذكورة أعلاه يمكن أن تزيد من معدل تجديد الكود ، إلا أنها تحتوي على عيب كبير مقارنة بمفهوم الفئة الموجهة نحو الكائن. المعكرونة
تؤكد الصورة النسبية على خاصية الكائن ، ويتم مشاركة طريقة الكائن. وطريقة المصنع أعلاه لإنشاء كائن لبعضها البعض
الكائنات إنشاء أساليب الأنانية الخاصة بها. في الوقت نفسه ، فإن نفس الطريقة لإنشاء نفس المنطق لكل كائن هي مضيعة للذاكرة. تحسن على النحو التالي
نسخ رمز رمز على النحو التالي:
<span style = "font-size: 14px ؛"> <script type = "text/javaScript">
وظيفة createObj (الاسم ، العمر) {{
var obj = كائن جديد () ؛
obj.name = الاسم ؛
obj.age = العمر ؛
obj.showname = downame.
obj.showage = Showage ؛
إرجاع OBJ
}
دالة showname () {// وظيفة هي أيضًا كائن
تنبيه (this.name) ؛
}
وظيفة العرض () {
تنبيه (this.age) ؛
}
var obj1 = createObj ("koji" ، 22) ؛
var obj2 = createObj ("luo" ، 21) ؛
OBJ1.SHOWNAME () ؛
OBJ1.Showage () ؛
OBJ2.Showname () ؛
OBJ2.Showage () ؛
</script> </span>
يتم تعريف كائنات الوظيفة المذكورة أعلاه لحل المشكلات الخاصة لكائنات وظيفة الكائنات المختلفة. الآن جميع الكائنات
عقد الإشارة إلى وظيفتين أعلاه. ولكن بهذه الطريقة ، أصبحت وظيفة الكائن مستقلة وغير ذات صلة بالكائن. هذا و
طرق محددة للطرق المحددة الموجهة نحو الكائن لا تفي بأفكار فئات محددة.
طريقة وظيفة البناء
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
// تحديد مُنشئ لإنشاء الكائن المقابل.
وظيفة الشخص (الاسم ، العمر) {
// عند الاتصال بشخص جديد ، قبل تنفيذ السطر الأول من التعليمات البرمجية ، يكون الشخص كائنًا الشخص والكائن في الذاكرة
// يتم إعطاء مهمة الفهرس لهذه الكلمة الرئيسية.
this.name = الاسم ؛ بالنسبة للكائن الحالي ، أي ، تعيين سمة الاسم للكائن المشار إليه بواسطة هذه الكلمة الرئيسية
// ، إنها في الواقع مكافئة لإضافة خاصية الاسم إلى الكائن الحالي ، ثم تعيين قيمة إلى سمة اسمها.
this.age = العمر ؛
this.showname = function () {// إضافة طريقة إلى الكائن الحالي
تنبيه (this.name) ؛
}
this.showage = function () {
تنبيه (this.age) ؛
}
// إرجاع الكائن الحالي إلى المتغير على يسار رمز المهمة (لا حاجة لاستخدام العودة)
}
var OBJ1 = شخص جديد ("Koji" ، 22) ؛
var obj2 = شخص جديد ("luo" ، 21) ؛
OBJ1.SHOWNAME () ؛
OBJ1.Showage () ؛
OBJ2.Showname () ؛
OBJ2.Showage () ؛
</script>
طريقة بناء وظيفة هي نفس طريقة المصنع ، وستقوم بإنشاء كائن دالة حصري لكل كائن. بالطبع ، يمكنك أيضًا وضع هذه الوظائف
يتم تعريف الكائن خارج المنشئ ، بحيث تكون الكائنات والأساليب مستقلة عن بعضها البعض.
طريقة النموذج الأولي: خاصية النموذج الأولي للكائن المستخدم في هذه الطريقة
نسخ رمز رمز على النحو التالي:
نوع البرنامج النصي = "Text/JavaScript">
وظيفة person () {} // تحديد دالة Air -confined ، ولا يمكن تمرير المعلمات
// أعط جميع طرق جميع السمات إلى سمة النموذج الأولي
person.prototype.name = "koji" ؛
person.prototype.age = 22 ؛
person.prototype.showname = function () {// إضافة طريقة
تنبيه (this.name) ؛
}
person.prototype.showage = function () {
تنبيه (this.age) ؛
}
var obj1 = شخص جديد () ؛
var obj2 = شخص جديد () ؛
OBJ1.SHOWNAME () ؛
OBJ1.Showage () ؛
OBJ2.Showname () ؛
OBJ2.Showage () ؛
</script>
عند إنشاء كائن الشخص ، يتم تعيين سمات النموذج الأولي للكائن الجديد. ثم تتم مشاركة السمات والأساليب.
مشكلة هذه الطريقة هي أنه لا يمكن تمرير المنشئ ، وأن كل كائن تم إنشاؤه حديثًا له القيمة الافتراضية. ثانياً ، لا تتم مشاركة الطريقة
أي مشكلة ، ولكن مشاركة السمات مشكلة ، عندما تكون السمة هي الكائن الذي يمكن أن يغير الحالة.
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
وظيفة person () {} // تحديد دالة Air -confined ، ولا يمكن تمرير المعلمات
person.prototype.age = 22 ؛
person.prototype.array = صفيف جديد ("koji" ، "luo") ؛
person.prototype.showage = function () {
تنبيه (this.age) ؛
}
person.prototype.showarray = function () {
تنبيه (this.array) ؛
}
var obj1 = شخص جديد () ؛
var obj2 = شخص جديد () ؛
OBJ1.array.push ("Kyo") ؛
OBJ1.Showarray () ؛
obj2.showarray () ؛
</script>
عندما يضيف الرمز أعلاه عناصر إلى سمة OBJ1 إلى سمة OBJ1 ، يتبع عنصر سمة ARRA من OBJ2 أيضًا
التأثير هو أن خاصية الصفيف الخاصة بكائنات OBJ1 و OBJ2 تقتبس نفس كائن الصفيف ، لذا قم بتغيير هذه الصفيف
كائن ، ستتأثر سمة كائن الصفيف بشكل طبيعي
طريقة مختلطة/طريقة النموذج الأولي
استخدم المُنشئ لتحديد سمات الكائن ، واستخدام النموذج الأولي لتحديد الكائنات ، بحيث يمكن تحقيق السمة
خاصة ، ومشاركة الطريقة.
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
وظيفة الشخص (الاسم ، العمر) {
this.name = name ؛
this.age = العمر ؛
this.array = صفيف جديد ("koji" ، "luo") ؛
}
person.prototype.showname = function () {
تنبيه (this.name) ؛
}
person.prototype.showarray = function () {
تنبيه (this.array) ؛
}
var OBJ1 = شخص جديد ("Koji" ، 22) ؛
var obj2 = شخص جديد ("luo" ، 21) ؛
OBJ1.array.push ("Kyo") ؛
OBJ1.Showarray () ؛
OBJ1.SHOWNAME () ؛
OBJ2.ShowArray () ؛
OBJ2.Showname () ؛
</script>
بعد أن تكون السمات خاصة ، لن يؤثر تغيير سماتها على الأشياء الأخرى. في الوقت نفسه ، تتم مشاركة الطريقة أيضًا من قبل كل كائن. من الناحية الدلالية ،
هذا يلبي متطلبات برمجة الوجه.
النموذج الأولي الديناميكي
نسخ رمز رمز على النحو التالي:
<script type = "text/javaScript">
وظيفة الشخص (الاسم ، العمر) {
this.name = name ؛
this.age = العمر ؛
this.array = صفيف جديد ("koji" ، "luo") ؛
// إذا كان _initialized في كائن الشخص غير محدد ، فإنه يشير إلى أنه لم يضف بعد طريقة إلى النموذج الأولي للشخص
ifof person._initialized == "Underfired")
{{
person.prototype.showname = function () {
تنبيه (this.name) ؛
}
person.prototype.showarray = function () {
تنبيه (this.array) ؛
}
person._initialized = صحيح ؛
}
}
var OBJ1 = شخص جديد ("Koji" ، 22) ؛
var obj2 = شخص جديد ("luo" ، 21) ؛
OBJ1.array.push ("Kyo") ؛
OBJ1.Showarray () ؛
OBJ1.SHOWNAME () ؛
OBJ2.ShowArray () ؛
OBJ2.Showname () ؛
</script>
هذه الطريقة مشابهة للمشارك/النموذج الأولي. فقط ضع الطريقة في المنشئ ، بينما في نفس الوقت
تتم إضافة سمة إلى شخص الوظيفة للتأكد من أنه لا يمكن تنفيذ البيان IF إلا بنجاح مرة واحدة
الأكثر استخدامًا على نطاق واسع في التطبيقات العملية هي طريقة المنشئ/النموذج الأولي. طريقة النموذج الأولي الديناميكي تحظى بشعبية كبيرة للغاية ، ولها وظائف وبنية
طريقة الوظيفة/النموذج الأولي مكافئ. لا تستخدم طريقة المنشئ أو النموذج الأولي وحده.