دعنا أولاً نمتلك برنامجًا صغيرًا لكائن نموذج أولي بسيط
وظيفة createObj (uname ، uage) {this.username = uname ؛ }
لا توجد مشكلة في هذا البرنامج ، ولكن يتم توسيع نطاق كل نموذج. :
CreateObj.Protype = {showUserage: function () {return this.userage ؛} ، showUsername: ) ؛
ومع ذلك ، فإن كتابة كائن النموذج الأولي هذا ينتمي إلى كائن النموذج الافتراضي لـ CreateObj.
قبل إعادة الكتابة ، يشير المنشئ إلى CreateObj
وظيفة createObj (uname ، uage) {this.username = uname ؛ } console.log (createObj.prototype.constructor === createObj) ؛
بعد إعادة الكتابة ، يشير البناء إلى الكائن
CreateObj.Protype = {showUserage: function () {return this.userage ؛} ، showUsername: function () {return this.username ؛ .Contructor === كائن) ؛
لذلك ، لا يمكن للبناء تحديد الكائن بدقة ، لأنه سيتم تعديله
يتم توسيع الإجراءات التي كتبناها من قبل على كائن النموذج الأولي (النموذج الأولي) ، ثم الكائنات التي تم إنشاؤها.
هل يمكن لكائن المثيل استدعاء الامتداد بشكل طبيعي؟
وظيفة createObj (uname ، uage) {this.username = uname ؛ } console.log (OBJ1.ShowUsername ()) ؛
يمكن استدعاؤه بشكل طبيعي ، ولكن إذا تم إعادة كتابة كائن النموذج الأولي ، فلن يتم استدعاؤه
وظيفة createObj (uname ، uage) {this.username = uname ؛ ؛
لأنه بعد إعادة كتابة كائن النموذج الأولي ، يحدث في نفس الوقت قبل إعادة الكتابة. قيمة النوع المرجعي ، ستحصل جميع الحالات الأخرى على النتيجة بعد التغيير.
وظيفة createObj () {} createObj.prototype = {name: 'Ghostwu' ، المهارات: ['php' ، 'JavaScript' ، 'Linux']} ؛ Python ') ؛
يمكن أن تكون ميزة مشاركة النموذج الأولي مناسبة لتوسيع بعض الطرق لبعض الكائنات المدمجة ، مثل الصفيف للتكرار
Array.Protype.Unique = function () {var res = [] ؛ = - 1) {res.push (this [i]) ؛}} resever res ؛} var anrr = [10 ، 20 ، 30 ، 20 ، 40 ، 20] ؛ ؛
ومع ذلك ، لا تقم بتمديد الطريقة على الكائنات المدمجة بشكل عرضي.
ما سبق هو كل محتويات هذا المقال.