__proto__ é um protótipo interno e o protótipo é um protótipo construtor (o construtor é na verdade uma função)
O protótipo do construtor é um objeto
Então, o que é um construtor?
Para criar um objeto, você deve primeiro ter um construtor de objeto, como no PHP. Para criar um objeto, você deve primeiro ter uma aula
A essência de um construtor é uma função. A seguinte pergunta é: Como criar um objeto através deste construtor?
Resposta: Novo
O construtor constrói um objeto.
1. O __proto__ de todos os construtores/funções aponta para função.prototipo, que é uma função vazia (função vazia)
A cópia do código é a seguinte:
Número .__ proto__ === function.prototype
// verdadeiro
Boolean .__ proto__ === function.prototype
// verdadeiro
String .__ proto__ === function.prototype
// verdadeiro
Objeto .__ proto__ === function.prototype
// verdadeiro
Função .__ proto__ === function.prototype
// verdadeiro
Array .__ proto__ ===
Function.prototype
// verdadeiro
Regexp .__ proto__ === function.prototype
// verdadeiro
Erro .__ proto__ ===
Function.prototype
// verdadeiro
Data .__ Proto__ ===
Function.prototype
// verdadeiro
Isso mostra que o número e outros construtores são realmente objetos de função. Ou seja, é equivalente a var número = new function ();
Existem 12 construtores/objetos embutidos no JavaScript (o JSON é recentemente adicionado no ES5) e aqui estão 8 construtores que podem ser acessados. O restante é que o Global não pode ser acessado diretamente, os argumentos são criados apenas pelo mecanismo JS quando as chamadas de função, matemática e JSON existem em forma de objeto, sem novos. O __proto__ é objeto.Prototype. do seguinte modo
A cópia do código é a seguinte:
Math .__ Proto__ === Object.Prototype
// verdadeiro
Json .__ proto__ === object.prototype
// verdadeiro
Os "todos os construtores/funções" mencionados acima certamente incluem os personalizados. do seguinte modo
A cópia do código é a seguinte:
// Declaração da função
Função Pessoa ()
{}
// Expressão da função
var man
=
função()
{}
console.log (pessoa .__ proto__ === function.prototype)
// verdadeiro
console.log (man .__ proto__ ===
Function.prototype)
// verdadeiro
O que isto significa?
Todos os construtores vêm da função.prototipo e até incluem o objeto do construtor raiz e a própria função. Todos os construtores herdam as propriedades e métodos de função.prototipo. Como comprimento, chamada, aplicar, vincular (ES5).
Function.Prototype também é o único protótipo com o tipo de xxx.prototipo como "função". Os protótipos de outros construtores são todos objetos. do seguinte modo
A cópia do código é a seguinte:
console.log (typeof function.prototype)
// função
console.log (typeof object.prototype)
// objeto
console.log (tipo de número.prototipo)
// objeto
console.log (typeof boolean.prototype)
// objeto
console.log (typeof string.prototype)
// objeto
console.log (tipoof Array.prototype)
// objeto
console.log (typeof regexp.prototype)
// objeto
console.log (tipoof error.prototype)
// objeto
console.log (typeof date.prototype)
// objeto
console.log (typeof object.prototype)
// objeto
Ah, e também é mencionado acima que é uma função vazia, dê uma olhada nela sob alerta (function.prototype).
Eu sei que todos os construtores (incluindo integrados e personalizados) são função.Prototype, então quem é __proto__ da função.prototipo?
Acredito que todos já ouviram que as funções em JavaScript também são cidadãos de primeira classe, então onde eles podem ser refletidos? do seguinte modo
A cópia do código é a seguinte:
console.log (function.prototype .__ Proto__ ===
Object.prototype)
// verdadeiro
Isso mostra que todos os construtores também são objetos JS comuns e podem adicionar/excluir atributos, etc. ao construtor. Ao mesmo tempo, também herda todos os métodos no Object.prototype: ToString, Valueof, HasownProperty, etc.
Quem é __proto__ do objeto.prototipo?
A cópia do código é a seguinte:
Object.prototype .__ proto__ ===
nulo //
verdadeiro
Já chegou ao topo, para NULL.
Você entendeu a diferença entre __proto__ e protótipo em JavaScript? Se você tiver alguma dúvida, deixe uma mensagem e vamos discutir juntos