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 } }
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