2. Constructor de préstamo
Para resolver el problema causado por la inclusión de valores de tipo de referencia en el prototipo, utilizamos una técnica llamada robo de constructor de préstamo (también llamado objetos forjados o herencia clásica).
La idea básica de esta técnica: llame al constructor Supertype dentro del constructor de subclase.
El constructor se puede ejecutar en el objeto de subclase recién creado utilizando los métodos aplicar () y callar ().
function supertype () {this.colors = ["rojo", "azul", "verde"];} function subtype () {// superertype supertype.apply (this);} var instance1 = nuevo subtype (); instancia1.colors.push ("negro"); alerta (instancia1.color); // rojo, azul, verde, blackvar instance2 = new Subtype (); alerta (instancia2.colors); // rojo, azul, verdeEn el ejemplo anterior, el constructor Supertype en realidad se llama en el entorno de la instancia de subtipo recién creada (instancia1 instancia2). De esta manera, todos los códigos de inicialización de objetos definidos en la función SuperType () se ejecutarán en el nuevo objeto subtipo. Entonces, cada instancia de subtipo tendrá su propia copia del atributo de colores.
Pasar parámetros
Para las cadenas prototipo, los constructores de préstamos tienen una gran ventaja, es decir, puede pasar parámetros en constructores supertipo en constructores de subtipo.
function supertype (name) {this.name = name;} function subtype () {supertype.call (this, "bob"); this.age = 18;} var instance1 = new Subtype (); alert (instancia1.age); //18Alert(Instance1.name); //ChelínProblema de los constructores de préstamos:
Todos los métodos están definidos en el constructor, por lo que no hay forma de hablar sobre la reutilización de funciones. Además, los métodos definidos en los prototipos supertipo también son invisibles para los subtipos.
3. Herencia combinada
La herencia combinada, a veces llamada herencia pseudo-clásica, se refiere a combinar cadenas prototipo y técnicas de constructor de préstamo. Este es un modo de herencia que juega las fortalezas de ambos.
Usar cadenas prototipo para implementar la herencia de propiedades y métodos prototipo;
La herencia de las propiedades de instancia se logra mediante constructores de préstamos.
De esta manera, la reutilización de funciones se logra definiendo métodos en el prototipo, y también puede garantizar que cada instancia tenga sus propios atributos.
function supertype (nombre) {this.name = name; this.colors = ["rojo", "azul", "verde"];} supertype.prototype.sayname = function () {alerta (this.name);} function subtype (name, edad) {// atherance atribute supertype.call (this, name); this.age = Age;} // Método de herencia subtype.prototype = new SuperType (); Subtype.prototype.sayage = function () {alert (this.age);} var instance1 = new Subtype ("bob", 22); instancia1.colors.push ("negro"); alerta (instancia1.colors); //red,blue,green,blackenstance1.sayname (); //Bobinstance1.sayage (); // 22Var instance2 = new Subtype ("Alice", 21); alerta (instancia2.colors); //red,blue,greeninstance2.sayname (); //AliceInstance2.sayage (); // 21En este ejemplo, el constructor Supertype define dos propiedades: nombre y colores. El prototipo de SuperType define un método SaysName ().
El constructor de subtipo pasa en el parámetro de nombre al llamar al constructor Supertype y define su propia era del atributo. Luego asigne la instancia de SuperType al prototipo de subtipo. El método Saysage () se define en este prototipo.
Esto permite que dos instancias de subtipo diferentes tengan sus propias propiedades, incluidos los atributos de colores, y se puede utilizar el mismo método.
El artículo anterior habla brevemente sobre JS Heritance_Borrow Constructores y la herencia de combinación es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.