نموذج أعضاء كائن JavaScript كمصفوفات: تمت مشاركتهم عبر مثيلات الفصل
عند إنشاء نماذج أولية للمصفوفات في JavaScript، من المهم أن نفهم أن هؤلاء الأعضاء يصبحون مشتركين بين جميع حالات الطبقة. قد يبدو هذا السلوك غير بديهي إذا كنت معتادًا على أعضاء الكائنات الخاصة.
شرح السلوك
تسمح آلية النموذج الأولي لجافا سكريبت للكائنات بوراثة الخصائص والأساليب من الكائن الأصلي، المعروف باسم النموذج الأولي. عندما تقوم بتعريف مصفوفة كخاصية في النموذج الأولي، تصبح في متناول جميع الكائنات التي ترث من هذا النموذج الأولي.
يوضح المثال النصي هذا السلوك:
function Sandwich() { // Uncomment this to fix the problem //this.ingredients = []; }
مع عدم التعليق على السطر الذي تم التعليق عليه، سيكون لكل مثيل ساندويتش مجموعة مكونات خاصة به. ومع ذلك، مع التعليق على السطر، تشترك جميع المثيلات في نفس مجموعة النموذج الأولي.
وهذا يعني أن إضافة مكون إلى تشيز برجر يعمل أيضًا على تحديث مكونات blt وspicable_chicken_sandwich. لمنع ذلك، يجب عليك تحديد مصفوفة المكونات داخل المنشئ، كما هو موضح في المثال المحدث أدناه:
function Sandwich() { this.ingredients = []; }
النموذج الأولي مقابل المثيل
من الضروري التمييز بين خصائص النموذج الأولي وخصائص المثيل. تتم مشاركة خصائص النموذج الأولي بين جميع الكائنات التي ترث من هذا النموذج الأولي، في حين أن خصائص المثيل تكون فريدة لكل كائن.
تعديلات التعليمات البرمجية لإصلاح السلوك
في المثال النصي، قم بإلغاء التعليق على السطر this.ingredients = []; ضمن منشئ ساندويتش يضمن أن كل مثيل له مصفوفة مكونات خاصة به، على النحو المنشود.
الاستنتاج
يعد فهم سلوك المصفوفات النموذجية في JavaScript أمرًا بالغ الأهمية لتجنب المشاركة غير المتوقعة بين حالات الطبقة. تذكر دائمًا أن البيانات التي يجب أن تكون خاصة بالمثيل يجب أن يتم تعريفها داخل المُنشئ، بينما يمكن تعيين البيانات المشتركة إلى النموذج الأولي عبر الميراث.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3