Protótipos
Digite o texto aqui...
JavaScript básica 6.1.3 Protótipos Antes de podermos abordar a terceira técnica de criação de objeto, devemos fazer uma breve pausa para explicar os protótipos. Todo objeto JavaScript tem um segundo objeto JavaScript (ou null, mas isso é raro) associado. Esse segundo objeto é conhecido como protótipo e o primeiro objeto herda propriedades do protótipo.Todos os objetos criados por objetos literais têm o mesmo objeto protótipo e podemos nos referir a esse objeto protótipo em código JavaScript como Object.prototype. Os objetos criados com a palavra-chave new e uma chamada de construtora utilizam o valor da propriedade prototype da fun-ção construtora como protótipo. Assim, o objeto criado por new Object() herda de Object.prototype, exatamente como acontece com o objeto criado por {}. Da mesma forma, o objeto criado por new Array() usa Array.prototype como protótipo e o objeto criado por new Date() usa Date.prototype como protótipo.Object.prototype é um dos raros objetos que não têm protótipo: ele não herda propriedade alguma. Outros objetos protótipos são objetos normais que têm protótipo. Todas as construtoras internas (e a maioria das construtoras definidas pelo usuário) têm um protótipo que herda de Object.prototype. Por exemplo, Date.prototype herda propriedades de Object.prototype; portanto, um objeto Date criado por new Date() herda propriedades de Date.prototype e de Object.prototype. Essa série enca-deada de objetos protótipos é conhecida como encadeamento de protótipos.Uma explicação sobre o funcionamento da herança de propriedades aparece na Seção 6.2.2. Vamos aprender a consultar o protótipo de um objeto na Seção 6.8.1. E o Capítulo 9 explica a conexão entre protótipos e construtoras com mais detalhes: ele mostra como se define novas "classes" de ob-jetos escrevendo uma função construtora e configurando sua propriedade prototype com o objeto protótipo a ser utilizado pelas "instâncias" criadas com essa construtora.6.1.4 Object.create() ECMAScript 5 define um método, Object.create(), que cria um novo objeto, usando seu primeiro argumento como protótipo desse objeto. Object.create() também recebe um segundo argumento opcional que descreve as propriedades do novo objeto. Esse segundo argumento é abordado na Seção 6.7.Object.create() é uma função estática e não um método chamado em objetos individuais. Para usá--la, basta passar o objeto protótipo desejado:var o1 = Object.create({x:1, y:2}); // o1 herda as propriedades x e y.Pode-se passar null para criar um novo objeto que não tem protótipo, mas se você fizer isso, o objeto recém-criado não vai herdar nada, nem mesmo métodos básicos, como toString() (isso significa que também não funcionaria com o operador +):var o2 = Object.create(null); // o2 não herda propriedades nem métodos
