Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la méthode d'héritage JavaScript (2)

零到壹度
Libérer: 2018-03-22 14:24:21
original
962 Les gens l'ont consulté

Cet article commence par écrire quelques fonctions d'outils pour implémenter des extensions de classe. Chaque fonction utilitaire est ciblée sur une manière (habitudes) spécifique d’écrire des cours. Cet article écrit des classes selon la méthode constructeur : les attributs (champs) et les méthodes y sont tous accrochés. Les classes suivantes sont fournies respectivement en tant que classes parentes et sous-classes.

/

/  父类Person
function Person(nationality) {
    this.nationality = nationality;
    this.setNationality = function(n) {this.nationality=n;};
    this.getNationality = function() {return this.nationality;};
}
// 子类Man
    function Man(name) {
    this.name = name;
    this.setName = function(n){this.name=n;};
    this.getName = function(){return this.name;};
}
Copier après la connexion

1, héritez de la première fonction de l'outil

/**
 * @param {Function} subCls 子类
 * @param {Function} superCls 父类
 * @param {Object} param 父类构造参数
 */
function extend(subCls, superCls, param) {
superCls.call(subCls.prototype, param);
}
Copier après la connexion

et utilisez-le comme suit

extend(Man, Person, 'China');
var m = new Man('jack');
console.log(m.nationality);//China
console.log(m.setNationality('Japan'));
console.log(m.getNationality('Japan'));//Japan
Copier après la connexion

Le résultat montre que Man hérite des attributs et de toutes les méthodes de Person. Cette méthode d'héritage est très différente de Java.

class Animal {
int legs;
Animal(int l) {
legs = l;
}
int getLegs() {
return legs;
}
}
public class Person extends Animal{
//属性(字段)
String name;
//构造方法(函数)
Person(int legs, String name) {
super(legs);//调用父类构造器
this.name = name;
}
//方法
String getName() {
return this.name;
}
public static void main(String[] args) {
Person p = new Person(2,"jack");
System.out.println(p.legs);
}
}
Copier après la connexion

En Java, la sous-classe Person appelle la méthode de construction de la classe parent super(legs) dans sa propre méthode de construction, et ajoute directement la classe parent lors de la création d'un objet. . Le paramètre de construction legs:2 est transmis, pas seulement votre propre nom :jack. L'héritage JavaScript ci-dessus consiste à transmettre les paramètres de construction de la classe parent (le troisième paramètre de la fonction d'extension) lors de l'extension, et non lors de la création. Lors de la gestion des effectifs, transmettez les paramètres de construction de la classe parent. D'accord, simulez Java pour implémenter extend. Ici, la référence de la classe parent est intelligemment stockée temporairement dans la sous-classe.

2, héritez de la fonction outil deux

/**
 * @param {Function} subCls
 * @param {Function} superCls
 */
function extend(subCls, superCls) {
subCls.supr = superCls;
}
Copier après la connexion

ou utilisez Person comme classe parent pour implémenter la sous-classe Woman

function Woman(nationality, name) {
Woman.supr.call(this, nationality);//和java有点类似哦,在子类中调用父类构造器
this.name = name;
this.setName = function(n){this.name=n;};
this.getName = function(){return this.name;};
}
extend(Woman, Person);
Copier après la connexion

Enfin, la manière de créer un objet est similaire à Java, c'est-à-dire que lorsqu'il est nouveau, le paramètre de construction de la classe parent (nationalité : Japon) est transmis en même temps.

var w = new Woman('Japan', 'lily');
console.log(w.nationality);//Japan
w.setNationality('U.S.A');
console.log(w.getNationality());//U.S.A
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal