Object.prototype.isPrototypeOf()
الدالة Object.prototype.isPrototypeOf()
تُعيد قيمةً منطقيةً تبيّن إن كان الكائن موجودًا في سلسلة prototype لكائنٍ آخر.
الدالة isPrototypeOf()
تختلف عن المعامل instanceof
، فالتعبير object instanceof AFunction
سيتحقق من وجود الخاصية AFunction.prototype
في سلسلة prototype
للكائن object
، وليس الدالة AFunction
نفسها.
البنية العامة
prototypeObj.isPrototypeOf(object)
object
الكائن الذي سنبحث في سلسلة prototype التابعة له.
القيمة المعادة
قيمة منطقية Boolean
تُشير إذا كان الكائن موجودًا في سلسلة prototype للكائن المُحدَّد.
الأخطاء
سيرمى الخطأ TypeError
إذا كان الكائن prototypeObj
غير مُعرَّف undefined
أو null
.
الوصف
تسمح الدالة isPrototypeOf()
بالتحقق إن كان أحد الكائنات موجودًا في سلسلة prototype لكائنٍ آخر.
أمثلة
المثال الآتي يوضِّح أنَّ الخاصيات Baz.prototype
و Bar.prototype
و Foo.prototype
و Object.prototype
تتواجد في سلسلة prototype
للكائن baz
:
function Foo() {}
function Bar() {}
function Baz() {}
Bar.prototype = Object.create(Foo.prototype);
Baz.prototype = Object.create(Bar.prototype);
var baz = new Baz();
console.log(Baz.prototype.isPrototypeOf(baz)); // true
console.log(Bar.prototype.isPrototypeOf(baz)); // true
console.log(Foo.prototype.isPrototypeOf(baz)); // true
console.log(Object.prototype.isPrototypeOf(baz)); // true
تفيد الدالة isPrototypeOf()
، بالإضافة إلى المعامل instanceof
، عند التعامل مع الكائنات التي تنحدر من سلسلة prototype معيّنة (للتحقق من وجود دوال أو خاصيات معيّنة في تلك الكائنات).
على سبيل المثال، الشيفرة الآتية تختبر إن كان الكائن baz
ينحدر من Foo.prototype
:
if (Foo.prototype.isPrototypeOf(baz)) {
// ...
}
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | نعم | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 3rd Edition.