Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

O método isPrototypeOf() checa se um objeto existe em na cadeia de protótipos de um outro objeto.

isPrototypeOf() difere do operador instanceof. Na expressão "objeto instanceof UmaFuncaoQualquer", a cadeia de protótipos do objeto é comparada com UmaFuncaoQualquer.prototype, e não com a própria função UmaFuncaoQualquer.

Sintaxe

prototypeObj.isPrototypeOf(objeto)

Parâmetros

objeto
Objeto no qual será feito uma busca na cadeia de protótipos.

Retorno

Um Boolean indicando se prototypeObj está na cadeia de protótipos do objeto.

Erros possíveis

TypeError
Um TypeError é mostrado se prototypeObj é undefined ou null.

Descrição

O método isPrototypeOf() lhe permite checar se um objeto está ou não na cadeia de protótipos (cadeia hieráquica) de um outro objeto.

Em outras palavras, você pode descobrir se um objeto x (já instanciado) é herdeiro de um objeto y.

 

Exemplos

Este exemplo demonstra que Baz.prototype, Bar.prototypeFoo.prototype eObject.prototype estão na cadeia de protótipos de  baz , ou seja, baz herda atributos de Baz, Bar e Foo:

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

O métodoisPrototypeOf(), junto com o operador instanceof vêm a ser útil se você tem um código que só pode funcionar quando estiver lidando com objetos que descendem de uma cadeia de protótipos específicos, por exemplo, para garantir que certos métodos ou propriedades estarão presentes naquele objeto que você precisa. 

Por exemplo, checar se o objeto baz descende de Foo.prototype:

if (Foo.prototype.isPrototypeOf(baz)) {
  // fazer algo seguramente
}

Specificações

Especificação Status Comment
ECMAScript 3rd Edition (ECMA-262) Padrão Initial definition.
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.prototype.isPrototypeOf' in that specification.
Padrão  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.prototype.isPrototypeOf' in that specification.
Padrão  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.prototype.isPrototypeOf' in that specification.
Padrão em tempo real  

Compatibilidade com o Browser

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes Yes Yes Yes Yes

Veja também

Etiquetas do documento e colaboradores

Etiquetas: 
 Colaboradores desta página: SilvaCoder
 Última atualização por: SilvaCoder,