5. Herança parasitária
Semelhante aos construtores parasitários e padrões de fábrica, crie uma função usada apenas para encapsular o processo de herança, que aprimora internamente o objeto de alguma forma e finalmente retorna o objeto.
função createanOther (original) {var clone = object.create (original); // Crie um novo objeto chamando a função clone.sayhi = function () {// aprimora esse objeto de alguma maneira alerta ("oi"); }; clone de retorno; // retorna este objeto} var pessoa = {name: "bob", amigos: ["Shelby", "Court", "Van"]}; var de outro = createanOther (pessoa); outroperseson.sayhi ();No exemplo acima, a função criativa recebe um parâmetro, ou seja, o objeto a ser usado como base do novo objeto.
OUTROPERSON é um novo objeto criado com base na pessoa. O novo objeto não apenas possui todas as propriedades e métodos da pessoa, mas também seu próprio método Sayhi ().
6. Herança de combinação parasitária
A herança combinada é o padrão de herança mais comumente usado em JS. O maior problema com a herança combinado é que o construtor será chamado duas vezes em qualquer caso: uma vez ao criar um protótipo de subtipo e a outra vez dentro do construtor de subtipo.
função supertype (nome) {this.name = name; this.colors = ["vermelho", "azul", "verde"];} supertype.prototype.sayname = function () {alert (this.name);} função subtype (nome, idade) {supertype.call (this, nome); // a segunda chamada para supertype () this.age = Age;} subtype.prototype = new supertype (); // A primeira chamada para supertype () subtype.prototype.sayage = function () {alert (this.age);}Quando o construtor de supertipo é chamado pela primeira vez, o subtipo.prototipo receberá duas propriedades: nome e cores; Ambas são propriedades de instância do supertipo, mas agora estão localizadas no protótipo do subtipo.
Quando o construtor do subtipo é chamado, o construtor de supertipo é chamado novamente e, desta vez, o nome e as cores do atributo de instância são criados no novo objeto.
Portanto, esses dois atributos bloqueiam dois atributos de mesmo nome no protótipo.
A herança de combinação parasita é resolver esse problema.
Atributos herdados emprestando construtores;
Herdar o método através da cadeia de protótipo.
Não há necessidade de chamar o construtor de supertipo para especificar o protótipo do subtipo.
Função HeritPrototype (subtipo, supertype) {var prototype = object.create (supertype.prototype); // crie objeto prototype.constructor = subtipo; // aprimora o objeto subtype.prototype = prototype; // especificar objeto} função supertype (nome) {this.name = name; this.colors = ["vermelho", "azul", "verde"];} supertype.prototype.sayname = function () {alert (this.name);} função subtype (nome, idade) {supertype.call (this, nome); // a segunda chamada para supertype () this.age = Age;} INERITPROTOTYPE (SUBTYPE, supertype) subtype.prototype.sayage = function () {alert (this.age);} var instance = new Subtype ("bob", 18); instance.Sayname ();A função HeritPrototype recebe dois parâmetros: o construtor do subtipo e o construtor de supertipo.
1. Crie uma cópia do protótipo do supertipo.
2. Adicione o atributo construtor à cópia criada para compensar o atributo de construtor padrão perdido devido à reescrita do protótipo.
3. Atribua o objeto recém -criado (ou seja, cópia) ao protótipo do subtipo. Esse método chama apenas o construtor de supertipo uma vez, e a instância e isPrototypeOf () também podem ser usados normalmente.
O artigo acima fala brevemente sobre a herança JS Heretance_parasitic e a herança de combinação parasitária é todo o conteúdo que eu compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.