Maison > Article > interface Web > Solutions aux problèmes d'héritage de classe paramétré et sans paramètre Javascript_compétences Javascript
En ce qui concerne l'héritage de classe Javascript, il doit être indissociable de la chaîne de prototypes, mais l'héritage implémenté uniquement via la chaîne de prototypes présente de nombreux défauts.
Problèmes avec l'héritage de classe sans paramètre
Regardons d'abord un exemple de code pour implémenter B héritant de A :
fonction B() {
>
B.prototype = nouveau A();
B.prototype.b1 = function() { };
var b = nouveau B();
alert(b.constructor == A); // vrai
alert(b.constructor == B); // false
1. A doit être instancié en tant que prototype de B. A ce moment, le constructeur de A est exécuté. Mais selon les règles orientées objet, avant d'instancier B, les constructeurs de B et sa classe parent A ne doivent pas être exécutés.
2. Modification du prototype de B, ce qui fait que b.constructor n'est pas B mais A.
Il y a un problème avec l'héritage de classe de paramètres
Supposons que A et B aient deux paramètres de chaîne s1 et s2. A calcule la longueur totale des deux chaînes B appelle directement A avec s1 et s2 comme paramètres :
fonction B(s1, s2) {
>
B.prototype = nouveau A();
B.prototype.b1 = fonction() {
};
nouveau B("ab", "123");
La portée de s1 et s2 est uniquement en B. Si vous souhaitez les transférer vers A, vous ne pouvez opérer qu'en B. Ceci peut être réalisé à l'aide de la méthode apply de la fonction :
Considérant que les langages de haut niveau tels que C# et Java ont abandonné l'héritage multiple, cet article ne traite que de l'héritage unique. La méthode d'héritage décrite dans cet article sera également écrite comme une extension de jRaiser et sera publiée ultérieurement.