"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > متى يتم اختيار Object.create بدلاً من الجديد لوراثة JavaScript؟

متى يتم اختيار Object.create بدلاً من الجديد لوراثة JavaScript؟

تم النشر بتاريخ 2024-11-19
تصفح:709

When to Choose Object.create Over new for JavaScript Inheritance?

وراثة جافا سكريبت: Object.create vs.new

قد يكون مفهوم الوراثة في جافا سكريبت مربكًا، نظرًا لوجود طرق مختلفة لتحقيقه هو - هي. تهدف هذه المقالة إلى توضيح الطرق الأكثر قبولًا وتوفير حل للسيناريو المحدد الخاص بك.

فهم Object.create والجديد

Object.create هي طريقة تُنشئ كائن جديد عن طريق الوراثة من كائن موجود. يعد هذا مفيدًا عندما تريد إنشاء كائن أساسي ثم توسيعه بخصائص وأساليب إضافية. بناء جملة Object.create هو:

Object.create(prototype[, propertyObject])
Object.create(prototype[, propertiesObject])
من ناحية أخرى، يتم استخدام الكلمة الأساسية الجديدة لإنشاء مثيل جديد للكائن واستدعاءه وظيفة البناء لها. بناء جملة الجديد هو:

new ConstructorFunction([arguments])
Object.create(prototype[, propertiesObject])

اختيار الطريقة الصحيحة للميراث

الاختيار بين Object.create و الجديد يعتمد على متطلباتك المحددة. يعد Object.create مثاليًا لإنشاء الكائنات الأساسية التي تريد أن ترث منها دون استدعاء مُنشئيها. على سبيل المثال:

const Model = { // خصائص الكائن الأساسي وطرقه... }; const RestModel = Object.create(Model);
Object.create(prototype[, propertiesObject])
إذا كنت تريد استدعاء وظيفة المنشئ للكائن الأساسي على الكائن الموروث، فيجب عليك استخدام new. على سبيل المثال:

function Model() { // مُنشئ الكائن الأساسي... } وظيفة ريستموديل () { Model.call(هذا); // خصائص وأساليب إضافية...
function Model() {
    // Base object constructor...
}

function RestModel() {
    Model.call(this);
    // Additional properties and methods...
}

الحل للسيناريو الخاص بك

في حالتك، تريد أن ترث RestModel من الكائن الأساسي للنموذج. لتحقيق ذلك باستخدام Object.create، يمكنك القيام بما يلي:

RestModel.prototype = Object.create(Model.prototype);
Object.create(prototype[, propertiesObject])
سيؤدي هذا إلى إنشاء نموذج أولي جديد لـ RestModel يرث من نموذج أولي.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3