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
الدعم الأساسي نعم نعم نعم نعم نعم

مصادر ومواصفات