مقدمة
هناك العديد من الطرق لإنشاء كائنات باستخدام JavaScript. الآن دعنا ندرج أربعة منهم وندرج مزايا وعيوب كل طريقة ، حتى تتمكن من اختيارها واستخدامها. دعونا نلقي نظرة.
نموذج المصنع
وظيفة CreatePerson (الاسم ، العمر) {var obj = new Object () ؛ obj.name = الاسم ؛ obj.age = العمر ؛ إرجاع OBJ ؛ // تأكد من العودة ، وإلا غير محددة: غير محدد} var person1 = New CreatePerson ('Young' ، 18) ؛ console.log (person1.name + ':' + person1.age) ؛المزايا: يمكن أن يحل نمط المصنع مشكلة إنشاء كائنات مماثلة متعددة
العيوب: لم يتم حل مشكلة التعرف على الكائن (كيفية تحديد نوع الكائن)
وضع المنشئ
وظيفة الشخص (الاسم ، العمر) {this.name = name ؛ this.age = العمر ؛ } var person1 = شخص جديد ('Young' ، 18) ؛ console.log (person1.name + ':' + person1.age) ؛قبل أن تتحدث عن إيجابياتها وسلبياتها ، دعنا نتحدث عن قصتها أولاً.
استخدم المنشآت كوظائف
وظيفة الشخص (الاسم ، العمر) {this.name = name ؛ this.age = العمر ؛ this.sayname = function () {return this.name ؛ }} // استخدم var person1 = شخص جديد ('Young' ، 18) ؛ person1.sayname () ؛ console.log (person1.name + ':' + person1.age) ؛ // استدعاء الشخص ("الرياح" ، 18) ؛ console.log (window.sayname ()) ؛ // استدعاء var obj = new Object () ؛ person.call (obj ، 'Bird' ، 100) ؛ console.log (obj.sayname ()) ؛مزايا وعيوب البنائين
المزايا: يمكن تحديد مثيلها كنوع محدد
العيوب: يجب إعادة إنشاء كل طريقة في كل حالة. بالطبع يمكنك تغييره مثل هذا:
وظيفة الشخص (الاسم ، العمر) {this.name = name ؛ this.age = العمر ؛ this.sayname = sayname ؛ } وظيفة seallyname () {return this.name ؛ }بدلاً من ذلك ، اتصل بالوظائف العالمية ، لذلك لا يوجد تغليف. . . يمكن أن يعوض وضع النموذج الأولي التالي لهذا القصور
وضع النموذج الأولي
وظيفة person () {} person.prototype.name = 'Young' ؛ person.prototype.age = 18 ؛ person.prototype.sayname = function () {return this.name ؛ } var person1 = new person () ؛ console.log (person1.sayname ()) ؛ var person2 = شخص جديد () ؛ console.log (person1.sayname ()) ؛ ALERT (person1.SayName === Person2.SayName) ؛ // person1 و person2 الوصول إلى نفس وظيفة sayname () لنفس المجموعة من السماتعلى الرغم من أنه يمكن الوصول إلى القيمة المحفوظة في النموذج الأولي من خلال مثيل الكائن ، إلا أنه لا يمكن إعادة كتابة القيمة المخزنة في النموذج الأولي من خلال كائن المثيل
وظيفة person () {} person.prototype.name = 'Young' ؛ person.prototype.age = 18 ؛ person.prototype.sayname = function () {return this.name ؛ } var person1 = new person () ؛ var person2 = شخص جديد () ؛ person1.name = 'Wind' ؛ console.log (person1.sayname ()) ؛ // console.log (person2.sayname ()) ؛ // intern alert (person1.sayname == person2.sayname) ؛ // true عندما نسمي person1.sayName ، سنقوم بإجراء بحثين على التوالي. يحدد المحلل أولاً ما إذا كان الشخص المثالي 1 لديه سمة sayName . إذا كان هناك ، فسوف نسمي سماتنا الخاصة. إذا لم يكن هناك ، فسنبحث عن السمات في النموذج الأولي.
وظيفة person () {} person.prototype.name = 'Young' ؛ person.prototype.age = 18 ؛ person.prototype.sayname = function () {return this.name ؛ } var person1 = new person () ؛ var person2 = شخص جديد () ؛ person1.name = 'Wind' ؛ console.log (person1.sayname ()) ؛ // wind console.log (person2.sayname ()) ؛ // young delete person1.name ؛ console.log (person1.sayname ()) ؛ // Young Console.log (person2.sayname ()) ؛ // Young استخدم طريقة hasOwnPropertyType لاكتشاف ما إذا كانت خاصية موجودة في النموذج الأولي أو في المثيل. يتم موروث الطريقة من الكائن ، صحيح في المثيل وكاذبة في النموذج الأولي.
استخدم طريقة Object.keys() لتعداد خصائص المثيل على الكائنات
وظيفة person () {} person.prototype.name = 'Young' ؛ person.prototype.age = 18 ؛ person.prototype.sayname = function () {return this.name ؛ } var keys = object.keys (person.prototype) ؛ console.log (Keys) ؛ // ["Name" ، "Age" ، "SayName"]إيجابيات وسلبيات وضع النموذج الأولي
المزايا: لا حاجة لتكرار كل طريقة على كل حالة
العيوب: قلة قليلة من الناس يستخدمون وضع النموذج الأولي وحده. . قائمة الأسئلة بالتفصيل
وظيفة person () {} person.prototype = {constructor: شخص ، الاسم: 'Young' ، العمر: 18 ، الأصدقاء: ['big' ، 'pig'] ، sayname: function () {return this.name ؛ }} ؛ var p1 = شخص جديد () ؛ var p2 = شخص جديد () ؛ p1.friends.push ('mon') ؛ console.log (p1.friends) ؛ // ["Big" ، "Pig" ، "Mon"] console.log (p2.friends) ؛ // ["Big" ، "Pig" ، "Mon"] يرجع ذلك بالتحديد لأن الحالات لها عمومًا سماتها الخاصة ، ونحن نضعها Person.prototype النمط المحدد هنا ، لذلك مع تعديل P1 ، يتم تعديل المثيل بالكامل والنموذج الأولي. بعد ذلك ، يمكننا استخدام مجموعة من وضع المنشئ ووضع النموذج الأولي.
استخدم وضع المنشئ ووضع النموذج الأولي مجتمعًا
وظيفة الشخص (الاسم ، العمر) {this.name = name ؛ this.age = العمر ؛ this.friends = ['big' ، 'pig'] ؛ } person.prototype = {sayname: function () {return this.name ؛ }} ؛ var p1 = شخص جديد ('Young' ، 18) ؛ var p2 = شخص جديد ('Wind' ، 78) ؛ p1.friends.push ('Raganya') ؛ console.log (p1.friends) ؛ // ["big" ، "pig" ، "raganya"] console.log (p2.friends) ؛ // ["big" ، "pig"] console.log (p1.friends == p2يعد هذا النمط حاليًا الطريقة الأكثر استخدامًا والأكثر شهرة لإنشاء أنواع مخصصة. هو وضع افتراضي يستخدم لتحديد أنواع المرجع.
لخص
ما سبق هو كل شيء عن تحليل الطريقة التي يتم بها إنشاء الكائنات في JavaScript. تم تلخيص الطرق الأربعة ومزاياها وعيوبها من قبل هذه المقالة. آمل أن يكون من المفيد للجميع أن يتعلموا استخدام JavaScript.