"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Qual é a diferença entre proto e constructor.prototype?

Qual é a diferença entre proto e constructor.prototype?

Publicado em 19/11/2024
Navegar:846

What\'s the Difference Between proto and constructor.prototype?

A distinção entre proto e constructor.prototype

Ao trabalhar com objetos JavaScript, entenda a diferença entre proto e constructor.prototype são cruciais. Enquanto proto aponta para o protótipo direto de um objeto, constructor.prototype refere-se ao objeto a partir do qual a função que criou o objeto foi criada. Essa distinção pode levar a resultados diferentes ao percorrer cadeias de protótipos.

Prototype Chain Traversal

Conforme demonstrado no código fornecido, proto pode ser usado para percorrer a cadeia de protótipos de um objeto. No exemplo, proto é usado para percorrer a cadeia de protótipos de newtoy, uma instância da função Gadget. Cada chamada proto subsequente sobe um nível na cadeia, eventualmente retornando null, uma vez que não há protótipo além de Object.prototype.

No entanto, if constructor.prototype.constructor.prototype.constructor.prototype é usado, ele também ascende na cadeia de protótipos, mas eventualmente retorna a função Gadget inicial, pois se refere ao protótipo do qual o construtor Gadget foi criado.

Verificação de nulos no Internet Explorer

No Internet Explorer, onde a propriedade proto não está disponível, a cadeia de protótipos pode ser percorrida usando o getter de protótipo no objeto Function. O código abaixo demonstra como verificar nulo:

function checkNull(obj) {
  while (obj = obj.prototype) {
    // Check if the prototype is null
  }
}
Declaração de lançamento Este artigo foi reimpresso em: 1729476436 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3