javascript - objeto - Instancia de equivalente para las cadenas Object.create y prototype.
object.create javascript (2)
Mi respuesta será corta ...
Podría usar el método isPrototypeOf
, que estará presente en caso de que su objeto herede del prototipo de Objeto, como su ejemplo.
ejemplo:
A.isPrototypeOf(C) // true
B.isPrototypeOf(C) // true
Array.prototype.isPrototypeOf(C) // false
Más información se puede leer aquí: Mozilla Developer Network: isPrototypeOf
Considere un objeto de este tipo con una cadena de prototipo:
var A = {};
var B = Object.create(A);
var C = Object.create(B);
¿Cómo verificar en tiempo de ejecución si C tiene A en su cadena de prototipos?
instanceof
no encaja, ya que está diseñado para funcionar con funciones de constructor, que no estoy usando aquí.
Puede Object.getPrototypeOf
cadena de prototipos llamando a Object.getPrototypeOf
recursivamente: http://jsfiddle.net/Xdze8/ .
function isInPrototypeChain(topMost, itemToSearchFor) {
var p = topMost;
do {
if(p === itemToSearchFor) {
return true;
}
p = Object.getPrototypeOf(p); // prototype of current
} while(p); // while not null (after last chain)
return false; // only get here if the `if` clause was never passed, so not found in chain
}