JavaScript é uma voz orientada a objetos, ou seja, tudo é um objeto.
Então, como gerar um objeto? No mundo Java, os objetos são criados por instâncias de classe. Nos termos do leigo, eles abstravam coisas em um molde e usam esse molde (classe) para produzir objetos reais específicos (objetos).
No entanto, não há conceito de classe no JS. Alguns são "protótipos" e objetos são derivados de protótipos. Em termos leigos, no mundo do JS, "protótipo" não é um molde, mas um objeto concreto (objeto). Todos os objetos são derivados de outro objeto, e esse objeto derivado é o chamado "objeto de protótipo".
Existem três tipos de objetos em JavaScript, 1 objeto criado pelo usuário, 2 objeto construtor, 3 protótipo objeto
Cada um desses três objetos possui um atributo de propriedade -_proto__, que aponta para o protótipo do objeto, e pode ser rastreado de volta ao objeto.Prototipo a partir do ponto em que qualquer objeto o segue.
O construtor possui um objeto de protótipo, que aponta para um objeto de protótipo. Quando o objeto é criado através deste construtor, o atributo __proto__ do objeto criado apontará para o atributo protótipo do construtor.
O objeto de protótipo possui uma propriedade construtora que aponta para o construtor correspondente.
A conversa é barata, mostre -me o código! Vamos dar uma olhada no código:
var obj = {}; console.log (obj);Vamos expandir __proto__ para ver: são alguns métodos padrão.
Você definitivamente acontecerá que também existe um objeto __proto__ neste objeto __proto__. Como acabamos de dizer, cada objeto tem um atributo __proto__ apontando para o seu protótipo objeto. Vamos imprimir o __proto__ neste __proto__:
console.log (obj .__ proto __.__ proto__); //-> nulo
O resultado é nulo, indicando que o objeto de protótipo de nível superior chegou. O OBJ é definido no aparelho {}, e o objeto de protótipo da OBJ é naturalmente o objeto de nível superior do JS.
Vejamos o código de um lado para fortalecer nosso entendimento:
var pai = {name: "parent"}; var criança = {name: "filho", __proto__: pai}; var subchild = {name: "subchild", __proto__: filho} console.log (subchild);