الصفحة الرئيسية » الترميز » جافا سكريبت الموجه نحو الكائنات (OOJS) 3 طرق لإنشاء مثيلات الكائن

    جافا سكريبت الموجه نحو الكائنات (OOJS) 3 طرق لإنشاء مثيلات الكائن

    عندما تكون لغة البرمجة كل شيء عن الأشياء, أول شيء نحتاج إلى تعلمه هو كيف تصنع الأشياء. من السهل إلى حد ما إنشاء كائنات في JavaScript: زوج من الأقواس المتعرجة سوف تؤدي المهمة ، ومع ذلك ، هذا هو لا الطريقة الوحيدة لإنشاء كائن ولا الطريقة الوحيدة سوف تحتاج إلى استخدام من أي وقت مضى.

    في JavaScript ، مثيلات الكائن هي تم إنشاؤها من الكائنات المضمنة ويأتي إلى الوجود عندما يتم تشغيل البرنامج. فمثلا, تاريخ هو كائن مدمج يوفر لنا معلومات حول التواريخ. إذا أردنا إظهار التاريخ الحالي على الصفحة ، فإننا تحتاج إلى مثيل وقت التشغيل من تاريخ الذي يحمل المعلومات حول التاريخ الحالي.

    جافا سكريبت يسمح لنا أيضا تحديد الأشياء الخاصة بنا التي يمكن أن تنتج مثيلات الكائن الخاصة بهم في وقت التشغيل. في جافا سكريبت, كل شيء كائن وكل كائن لديه الجد النهائي مسمي موضوع. يسمى إنشاء مثيل كائن مثيل.

    1. و الجديد المشغل أو العامل

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

    تحتاج إلى البناء لتصنع الجديد عمل المشغل. المنشئ هو طريقة للكائن الذي يجمع أ مثيل جديد من هذا الكائن. بناء الجملة الأساسي يشبه هذا:

     المنشئ الجديد () 

    منشئ يمكن قبول الحجج التي يمكن استخدامها لتغيير أو إضافة خصائص إلى مثيل الكائن الذي يقوم بإنشائه. المنشئ له نفس الاسم ككائن ينتمي إليه.

    هنا مثال على كيفية إنشاء مثيل لل تاريخ() موضوع مع ال الجديد الكلمة:

     dt = تاريخ جديد (2017 ، 0 ، 1) console.log (dt) // الأحد يناير 01 2017 00:00:00 GMT + 0100 

    تاريخ() هو المنشئ لإنشاء جديد تاريخ موضوع. بناة مختلفة لكائن تأخذ حجج مختلفة لإنشاء نفس النوع من مثيلات الكائن مع سمات متنوعة.

    لا يمكن إنشاء مثيل لكل الكائنات المضمنة في JavaScript تاريخ. هناك كائنات ذلك لا تأتي مع المنشئ: الرياضيات, JSON و تعكس, لكنهم ما زالوا كائنات عادية.

    من بين الكائنات المضمنة التي لديها مُنشئ (مواد), رمز لا يمكن أن يسمى في أسلوب المنشئ لإنشاء مثيل جديد رمز حتة. يمكن أن يكون فقط تسمى وظيفة الذي يعود جديد رمز القيمة.

    أيضًا ، من بين الكائنات المضمّنة التي لها مُنشئ (مواد) ، لا تحتاج جميعًا إلى استدعاء مُنشئاتها باستخدام الجديد المشغل من أجل أن يتم إنشاء مثيل لها. وظيفة, مجموعة مصفوفة, خطأ, و التعبير العادي يمكن أيضا أن يسمى وظائف, بدون استخدام الجديد الكلمة الأساسية ، وسوف إنشاء مثيل وإرجاع مثيل كائن جديد.

    2. و تعكس موضوع

    قد يكون المبرمجون الخلفيون على دراية بالفعل انعكاس واجهات برمجة التطبيقات. الانعكاس هو سمة من سمات لغات البرمجة ل فحص وتحديث بعض الكيانات الأساسية, مثل الكائنات والطبقات, في وقت التشغيل.

    في JavaScript ، يمكنك القيام بالفعل بعض عمليات التفكير باستخدام موضوع. لكن انعكاس API السليم في النهاية جاء إلى الوجود في جافا سكريبت كذلك.

    ال تعكس الكائن لديه مجموعة من الأساليب ل إنشاء وتحديث مثيلات الكائن. ال تعكس موضوع ليس لديه منشئ, لذلك لا يمكن إنشاء مثيل لها مع الجديد المشغل ، ومثل تماما الرياضيات و JSON, هذا لا يمكن أن يسمى وظيفة إما.

    ومع ذلك, تعكس لديه أي ما يعادل الجديد المشغل أو العامل: ال Reflect.construct () طريقة.

     Reflect.construct (target ، argumentsList [، newTarget]) 

    كلا ال استهداف والاختياري هدف جديد الحجج هي الأشياء التي لديها بناة الخاصة بهم, في حين argumentsList هو قائمة الحجج ليتم تمريرها إلى منشئ استهداف.

     var dt = Reflect.construct (التاريخ ، [2017 ، 0 ، 1]) ؛ console.log (دينارا)؛ // Sun Jan 01 2017 00:00:00 GMT + 0100 

    الرمز أعلاه له نفس التأثير كما إنشاء مثيل تاريخ() باستخدام الجديد المشغل أو العامل. على الرغم من أنه لا يزال بإمكانك استخدامها الجديد, التفكير هو ECMAScript 6 standard. كما يسمح لك بذلك الاستفادة من هدف جديد جدال, وهو ميزة أخرى على الجديد المشغل أو العامل.

    قيمة ال هدف جديدالنموذج الأولي (على وجه الدقة ، إنه النموذج الأولي لـ هدف جديدمنشئ) يصبح النموذج الأولي للمثيل الذي تم إنشاؤه حديثًا.

    النموذج الأولي هو خاصية كائن, القيمة التي هي أيضا كائن, تحمل خصائص الكائن الأصلي. باختصار ، يحصل الكائن على أعضائه من النموذج الأولي.

    هنا ، دعونا نرى مثالا:

     class A constructor () this.message = function () console.log ('message from A') الفئة B constructor ()  message () console.log ('message from B')  data () console.log ('data from B') obj = Reflect.construct (A، []، B) console.log (obj.message ())؛ // message من A console.log (obj.data ()) ؛ // البيانات من B console.log (obj مثيل من B) // صحيح 

    بالمرور ب كما الحجة الثالثة ل Reflect.construct (), قيمة النموذج الأولي لل الكائنات الكائن هو جعل ليكون نفسه كنموذج أولي لل بمنشئ (الذي لديه خصائص رسالة و البيانات).

    وهكذا, الكائنات يمكن الوصول إلى رسالة و البيانات, متاح في النموذج الأولي. لكن منذ الكائنات يرصد باستخدام ا, كما أن لديها قناعاتها رسالة هذا مستلم من ا.

    بالرغم من ذلك الكائنات هي التي شيدت باعتبارها مجموعة ، هو عليه ليس مثيل مجموعة مصفوفة, لأنه تم تعيين النموذج الأولي الخاص به إلى موضوع.

     obj = Reflect.construct (Array، [1،2،3]، Object) console.log (obj) // Array [1، 2، 3] console.log (obj exampleof Array) // false 

    Reflect.construct () يمكن أن تكون مفيدة عندما تريد إنشاء كائن باستخدام أكثر من مخطط واحد.

    3. و Object.create () طريقة

    يمكنك أيضا إنشاء كائن عادي جديد مع نموذج أولي محدد بواسطة Object.create (). هذا ، أيضا ، قد تبدو مشابهة جدا لاستخدام الجديد المشغل ، لكنه ليس كذلك.

     Object.create (O [، propertiesObject]) 

    ال O الحجة هي كائن يقدم النموذج الأولي للكائن الجديد الذي سيتم إنشاؤه. اختياري propertiesObject الحجة هي قائمة الخصائص قد ترغب في إضافتها إلى الكائن الجديد.

     class A constructor ()  message () console.log ('message from A') var obj = Object.create (جديد A () ، data: writable: true ، configurable: true ، value: دالة () إرجاع 'بيانات من obj') console.log (obj.message ()) // message من A console.log (obj.data ()) // data من obj obj1 = Object.create ( جديد A () ، foo: writable: true ، قابل للتكوين: true ، value: function () return 'foo from obj1') console.log (obj1.message ()) // message من A console. log (obj1.foo ()) // foo from obj1 

    في ال الكائنات كائن ، الخاصية المضافة هي البيانات, بينما في obj1, انها فو. هكذا ، كما ترون ، يمكن أن يكون لدينا الخصائص والأساليب المضافة إلى كائن جديد.

    هذا شيء عظيم عندما تريد إنشاء كائنات متعددة من نفس النوع لكن مع الخصائص أو الأساليب التكميلية المختلفة. ال Object.create () بناء الجملة يحفظ مشكلة الترميز كل منهم على حدة.

    المادة التالية
    OCR أي شيء مع OneNote 2007 و 2010
    المقال السابق
    NVIDIA GeFORCE 8600 GTS