يشار إلى الحالة التي يتم فيها كتابة الطريقة في المُنشئ على أنها الطريقة داخل الوظيفة ، ويشار إلى الحالة التي يتم فيها كتابة الطريقة على سمة النموذج الأولي باسم الطريقة على النموذج الأولي.
• الطرق داخل الوظيفة: استخدام الطرق داخل الوظيفة ، يمكننا الوصول إلى المتغيرات الخاصة داخل الوظيفة. إذا كان الكائن الذي نستخدمه المُنشئ الجديد ليطلب منا تشغيل متغيرات خاصة داخل المنشئ ، فيجب علينا التفكير في استخدام الأساليب داخل الوظيفة في هذا الوقت.
• طرق على النموذج الأولي: عندما نحتاج إلى إنشاء عدد كبير من الكائنات من خلال وظيفة ، وهذه الكائنات لها العديد من الطرق ؛ في هذا الوقت ، نحتاج إلى التفكير في إضافة هذه الطرق إلى النموذج الأولي للوظيفة. في هذه الحالة ، سوف يستهلك الكود الذاكرة الصغيرة نسبيًا.
• في التطبيقات الفعلية ، غالبًا ما يتم استخدام هاتين الطريقتين مجتمعة ؛ لذلك نحن بحاجة إلى فهم ما نحتاجه أولاً ، ثم اختر كيفية استخدامه.
// مُنشئ Afunction a (name) {this.name = name || "أ" ؛ this.sayhello = function () {console.log ('hello ، اسمي هو:' + this.name) ؛ }} // constructor bfunction b (name) {this.name = name || 'b' ؛} b.prototype.sayhello = function () {console.log ('hello ، اسمي هو: B ('b2') ؛ b1.sayhello () ؛ b2.sayhello () ؛لقد كتبت اثنين من المُنشئين ، الأول هو ، والذي يحتوي على طريقة يقول هيلو ؛ والثاني هو مُنشئ B ، الذي يكتب أن الطريقة التي يقول بها هيهيلو على خاصية النموذج الأولي للمشارك ب. كتابة الطريقة داخل المنشئ تزيد من تكلفة تهيئة كائن من خلال المنشئ ، وكتابة الطريقة على خاصية النموذج الأولي تقلل بشكل فعال من هذه التكلفة. قد تعتقد أن أساليب الاتصال على الكائن أسرع بكثير من أساليب الاتصال على سلسلة النموذج الأولي ، وهذا ليس هو الحال. إذا لم يكن لديك العديد من النماذج الأولية على الكائن ، فإن سرعتها متشابهة بالفعل.
بالإضافة إلى ذلك ، بعض الأشياء التي يجب ملاحظة:
• أولاً وقبل كل شيء ، إذا قمت بتحديد طريقة على خاصية النموذج الأولي للوظيفة ، تذكر أنه إذا قمت بتغيير طريقة ، فسيتم تغيير طريقة جميع الكائنات التي تم إنشاؤها بواسطة هذا المنشئ.
• نقطة أخرى هي مسألة التحسين المتغير. يمكننا إلقاء نظرة على الكود التالي:
func1 () ؛ // سيتم الإبلاغ عن خطأ هنا لأن FUNC1 لم يتم تعيين قيمة عند تنفيذ الوظيفة. خطأ: FUNC1 ليس وظيفة func1 = function () {console.log ('func1') ؛} ؛ func2 () ؛ // سيتم تنفيذ هذا بشكل صحيح لأنه سيتم تعزيز إعلان الوظيفة.• فيما يتعلق بمسألة التسلسل الكائن. لن يتم تسلسل السمات المحددة على النموذج الأولي للوظيفة. يمكنك رؤية الرمز التالي:
الدالة A (name) {this.name = name ؛} A.Prototype.saywhat = 'say what ...' ؛ var a = new a ('dreamapple') ؛ console.log (json.stringify (a)) ؛يمكننا أن نرى أن الإخراج هو {"name": "DreamApple"}
تناقش المقالة أعلاه باختصار طريقة ونموذج مصمم JS هو كل المحتوى الذي شاركته معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.