0. المتطلب السابق
تنقسم خصائص كائنات JavaScript إلى شكلين من الوجود. أحدهما هو مثيل الوجود والآخر هو الوجود في كائن النموذج الأولي.
وفقًا لما ورد أعلاه ، ستكون هناك 4 حالات عند اكتشاف السمات
لا في الحالات ولا في كائنات النموذج الأولي
في الحالة ، لا يوجد في كائن النموذج الأولي
في الحالة ، فإنه موجود في كائن النموذج الأولي
موجود في كلتا الحالتين وفي الكائنات النموذجية
1. hasownprototype ()
يقبل HasOwnPrototype () اسم خاصية بتنسيق السلسلة ، ويُرجع صحيحًا إذا كان المثيل نفسه يحتوي على هذه الخاصية (الحالة 2/الحالة 4). خلاف ذلك ، فإنه يعود خطأ (الحالة 1/الحالة 3).
نسخة الكود كما يلي:
شخص functino () {}
person.prototype.name = 'Apple' ؛
var person1 = new person () ؛
var person2 = شخص جديد () ؛
person1.name = 'Banana' ؛
console.log (person1.hasownprototype (name)) ؛ //حقيقي
console.log (person2.hasownprototype (name)) ؛ //خطأ شنيع
2. في المشغل
سيعود المشغل في صحيح بغض النظر عما إذا كانت السمة موجودة في المثيل نفسه أو في كائن النموذج الأولي (الحالة 2/الحالة 3/الحالة 4) ؛ خلاف ذلك ، سيعود خطأ (الحالة 1).
نسخة الكود كما يلي:
console.log ('name' in Person1) ؛ //حقيقي
console.log ("الاسم" في person2) ؛ //حقيقي
3. اكتشف خصائص النموذج الأولي
يمكن دمج المشغل في HasownProperty () تخصيص الوظيفة لاكتشاف ما إذا كانت السمة المعطاة موجودة في النموذج الأولي.
نسخة الكود كما يلي:
دالة hasprototypeproperty (كائن ، اسم) {
return! object.hasownPrototype (name) && (name in Object) ؛
}
console.log (hasprototypeproperty (person1 ، 'name')) ؛ // false
console.log (hasprototypeproperty (person2 ، 'name')) ؛ // true
توجد السمة المحددة في النموذج الأولي ، تُرجع صحيحًا (الحالة 3). خلاف ذلك ، خطأ (الحالة 1/الحالة 2/الحالة 4).
ما سبق هو المحتوى الكامل لهذه المقالة. أتمنى أن تعجبك