Vamos primeiro ter um mini -programa de um objeto simples de construtor+protótipo
Função createObj (uname, uage) {this.username = uname; }
Não há problema neste programa, mas é muito redundante . :
CreateObj.Prototype = {ShowUSERAGE: function () {return this.UseRage;}, ShowUserName: function () {return this.username; );
No entanto, a escrita desse objeto de protótipo pertence ao objeto Protótipo padrão do CreateObj.
Antes de reescrever, o construtor aponta para CreateObj
Função createObj (uname, uage) {this.username = uname; } console.log (createObj.prototype.Constructor === CreateObj);
Após a reescrita, a construção aponta para objeto
CreateObj.Prototype = {ShowUSERAGE: function () {return this.UseRage;}, ShowUserName: function () {return this.username; .Constructor === Objeto);
Portanto, a construção não pode identificar com precisão o objeto, porque ele será modificado
Os procedimentos que escrevemos antes são basicamente expandidos no objeto Prototype (protótipo) e depois os objetos instantados.
O objeto de instância pode chamar a extensão normalmente?
Função createObj (uname, uage) {this.username = uname; } console.log (obj1.showusename ());
Pode ser chamado normalmente, mas se o objeto de protótipo for reescrito, não será chamado
Função createObj (uname, uage) {this.username = uname; ;
Porque depois de reescrever o objeto de protótipo, ele é instanciado antes de reescrever, o protótipo implícito da instância __proto__ não apontará para o objeto de protótipo de reescrita, para que você não chamará outro problema. Protótipo, existem tipos de citações no objeto (protótipo) e tenha cuidado, porque várias instâncias compartilham o objeto do protótipo, desde que haja uma instância que altere o valor do tipo de referência, todas as outras instâncias receberão o resultado após o mudar.
Função createObj () {} CreateObj.prototype = {Nome: 'Ghostwu', Habilidades: ['php', 'javascript', 'linux']}; Python ');
O recurso de compartilhamento do protótipo pode ser conveniente para expandir alguns métodos para alguns objetos construídos, como a matriz para repetir
Array.prototype.unique = function () {var res = []; = - 1) {res.push (este [i]);}} retornar res;} var anrr = [10, 20, 30, 30, 20, 40, 20]; ;
No entanto, não estenda o método nos objetos construídos -in casualmente.
O acima é todo o conteúdo deste artigo.