2. Construtor de emprestar
Para resolver o problema causado pela inclusão de valores de tipo de referência no protótipo, usamos uma técnica chamada Roubador de Construtor de Muraduras (também chamado de objetos forjados ou herança clássica).
A idéia básica dessa técnica: chame o construtor de supertipo dentro do construtor de subclasse.
O construtor pode ser executado no objeto subclasse recém -criado usando os métodos Aplicar () e Call ().
function supertype () {this.colors = ["vermelho", "azul", "verde"];} função subtype () {// herdou supertype supertype.apply (this);} var instance1 = new Subtype (); instance1.colors.push ("Black); alert (1.col.col.col.col.colors.push; // vermelho, azul, verde, Blackvar Instância2 = novo subtipo (); alert (instance2.Colors); // vermelho, azul, verdeNo exemplo acima, o construtor de supertipo é realmente chamado no ambiente da instância do subtipo recém -criada (Instance1 Instance2). Dessa forma, todos os códigos de inicialização do objeto definidos na função supertype () serão executados no novo objeto de subtipo. Portanto, cada instância do subtipo terá sua própria cópia do atributo de cores.
Passe os parâmetros
Para cadeias de protótipo, os construtores de empréstimos têm uma grande vantagem, ou seja, você pode passar parâmetros em construtores de supertipo em construtores de subtipo.
função supertype (name) {this.name = name;} função subtype () {supertype.call (this, "bob"); this.age = 18;} var instance1 = new Subtype (); alert (instance1.age); //18alert(instance1.name); //PrumoProblema dos construtores de empréstimos:
Os métodos são todos definidos no construtor; portanto, não há como falar sobre a reutilização da função. Além disso, os métodos definidos nos protótipos de supertipo também são invisíveis para os subtipos.
3. Herança combinada
A herança combinada, às vezes chamada de herança pseudo-clássica, refere-se à combinação de cadeias de protótipo e às técnicas de construtor de empréstimos. Este é um modo de herança que interpreta os pontos fortes de ambos.
Use cadeias de protótipo para implementar a herança de propriedades e métodos do protótipo;
A herança das propriedades de instância é alcançada por emprestadores de construtores.
Dessa maneira, a reutilização da função é alcançada definindo métodos no protótipo e também pode garantir que cada instância tenha seus próprios atributos.
função supertype (nome) {this.name = name; this.colors = ["vermelho", "azul", "verde"];} supertype.prototype.sayname = function () {alert (this.name);} função subtype (nome, idade) {// herança atribui supertype.call (this, nome); this.age = Age;} // Método de herança subtype.prototype = new supertype (); Subtype.prototype.sayage = function () {alert (this.age);} var instance1 = new Subtype ("bob", 22); instance1.colors.push ("preto"); alert (instance1.colors); //red.blue,Green.blackenstance1.sayName (); //BobInstance1.sayage (); // 22VAR Instância2 = novo subtipo ("Alice", 21); Alert (Instance2.Colors); //red.blue,GreenInstance2.SayName (); //AliceInstance2.Sayage (); // 21Neste exemplo, o construtor de supertipo define duas propriedades: nome e cores. O protótipo de Supertype define um método SayName ().
O construtor do subtipo passa no parâmetro de nome ao chamar o construtor de supertype e define sua própria idade de atributo. Em seguida, atribua a instância do supertipo ao protótipo do subtipo. O método diz que age () é definido neste protótipo.
Isso permite que duas instâncias diferentes do subtipo tenham suas próprias propriedades - incluindo atributos de cores e o mesmo método pode ser usado.
O artigo acima fala brevemente sobre os construtores JS Heritance_Borrow e a herança de combinação é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.