6
votes

Meilleure façon de cloner la classe JavaScript

J'ai une classe a déclaré la manière traditionnelle, c'est-à-dire xxx

maintenant, je souhaite créer une copie de cette classe (pas une copie de l'instance que la classe crée) mais modifie une partie de la Méthodes de prototype. En d'autres termes, je veux faire une copie de la classe avec certaines augmentations ... Dois-je utiliser l'héritage pour cela ou moi-même suffisant de boucler et d'attribuer des références à ma nouvelle classe pour le prototype d'origine et le nouveau?


4 commentaires

Utilisez-vous une bibliothèque JavaScript?


myClass est une fonction et non une classe.


@Gumbo Il n'y a vraiment aucune différence dans JS, comme vous le regardez.


Cela ressemble à un candidat parfait pour héritage. Peut-être que vous avez juste besoin de restructurer vos pensées un peu - peut-être au lieu d'un super-espèce et d'un sous-type, doté d'un Superype (éventuellement abstrait) partageant toutes les méthodes courantes et deux sous-types de la mise en œuvre de leurs propres variations. Si vous devez appeler une méthode de sous-type d'un autre, il devrait peut-être être dans le type parent.


3 Réponses :


-1
votes

Ceci n'est pas logique pour cloner votre classe, la classe de classe de classe la charactéristique partagée, si vous voulez simplement cloner la classe sa Événement non logique au lieu de simplement cloner, vous devez utiliser pour influer son objet. Vous devez utiliser l'héritage pour créer des sous-classes de la classe existante. Lire l'article complet sur l'intrusation à

https://developer.mozilla.org/fr/javascript/guide/inheritance_revisited < / a>


0 commentaires

10
votes

J'utiliserais un héritage normal. Essayez ceci: xxx


1 commentaires

Après 2 ans + 2 mois, je veux demander est comment je peux clone constructeur qui a des arguments d'entrée?



4
votes

Héritage de combinaison (parfois également appelé héritage pseudoclassique) combine le chaînage prototype et le vol de constructeur pour tirer le meilleur parti de chaque approche.

function SuperType(name){
    this.name = name;
    this.colors = ['red', 'blue', 'green'];
}

SuperType.prototype.sayName = function(){
    alert(this.name);
};

function SubType(name, age){          
    //inherit properties
    SuperType.call(this, name);
    this.age = age;
}

//inherit methods
SubType.prototype = new SuperType();


0 commentaires