عندما نقوم بإنشاء كائن مع مُنشئ ، ستتم إضافة خصائصه إلى هذا. ولن تتغير السمات المضافة إلى هذا في الواقع مع الكيان ، وفي هذا الوقت ، سيظهر نهجنا غير فعال. على سبيل المثال:
وظيفة Her () {this.name = 'Anna' ؛}هذا يعني أنه في كل مرة نقوم فيها بإنشاء كائن مثيل مع New Her () ، سنقوم بإنشاء سمة اسم جديدة ولدينا مساحة تخزين خاصة بها في الذاكرة التي تنتمي إلى السمة. في الواقع ، يمكننا إضافة سمة الاسم إلى النموذج الأولي ، بحيث يمكن لجميع الحالات مشاركة سمة الاسم هذه:
وظيفة Her () {} her.prototype.name = 'Anna' ؛وبهذه الطريقة ، عندما نستخدم New Her () لإنشاء كائن ما ، لم تعد سمة الاسم خاصية خاصة للكائن الجديد ، ولكن تتم إضافتها إلى النموذج الأولي للكائن. على الرغم من أن هذا النهج سيكون فعالًا للغاية ، إلا أنه مخصص أيضًا للخصائص الثابتة في كائن المثيل. هذا مؤكد. إذا قمت بتغيير هذه الخاصية ، فسيتم تغيير سمة جميع الكائنات الجديدة التي تم إنشاؤها. هذا ليس ما نريد ~~~. الخصائص العامة للكائن مناسبة بشكل خاص لهذا النهج.
هنا ، دعونا نحسن مثالًا سابقًا:
وظيفة Her () {} ؛ her.prototype.name = 'anna' ؛ her.prototype.toString = function () {return this.name ؛} وظيفة له () {} ؛ His.prototype = جديد لها () ؛ His.prototype.constructor = his ؛ his.prototype.sex = 'Women' ؛كما ترون ، عادةً ما نكممل بناء الميراث ذي الصلة قبل توسيع كائن النموذج الأولي ، وإلا فإن طرق السمة الجديدة اللاحقة في له.
وظيفة الطفل (f ، m) {this.eat = f ؛ this.don = m ؛} child.prototype = جديد له () ؛ child.prototype.constructor = child ؛ child.prototype.name = 'jok' ؛ child.prototype.fun = function () {return this.eat + this.don}كما ترون ، فإن الفرق بين استدعاء tostring () هو في الواقع مجرد عدد صغير من العمليات وراء الكواليس. الفرق الرئيسي هو الخصائص ، وسيحدث عمل البحث عن الأساليب أكثر في النمط.
طريقة تنفيذ JavaScript أعلاه لترحيل السمات المشتركة إلى النموذج الأولي هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.