102 votes

Méthodes de remplacement JavaScript

Disons que vous avez le code ci-dessous :

 function A() {
    function modify() {
       x = 300;
       y = 400;
    }

    var c = new C();
}

function B() {
    function modify(){
       x = 3000;
       y = 4000;
    }

    var c = new C();
}

C = function () {
   var x = 10;
   var y = 20;

   function modify() {
      x = 30;
      y = 40;
   };

   modify();
   alert("The sum is: " + (x+y));
}

Maintenant, la question est de savoir s'il existe un moyen de remplacer la méthode modify de C avec les méthodes qui sont dans A et B . En Java, vous utiliseriez le super , mais comment pouvez-vous obtenir quelque chose comme ça en JavaScript ?

3voto

alex heyd Points 881

modifier () dans votre exemple est une fonction privée, qui ne sera accessible de n'importe où mais dans votre définition A, B ou C. Vous devrez le déclarer comme

 this.modify = function(){}

C n'a aucune référence à ses parents, à moins que vous ne le passiez à C. Si C est configuré pour hériter de A ou B, il héritera de ses méthodes publiques (pas de ses fonctions privées comme vous avez défini modify()). Une fois que C hérite des méthodes de son parent, vous pouvez remplacer les méthodes héritées.

2voto

lovesh Points 1538

la méthode modify() que vous avez appelée en dernier est appelée dans un contexte global si vous voulez remplacer modify() vous devez d'abord hériter de A ou B .

Peut-être que vous essayez de faire ceci :

Dans ce cas, C hérite de A

 function A() {
    this.modify = function() {
        alert("in A");
    }
}

function B() {
    this.modify = function() {
        alert("in B");
    }
}

C = function() {
    this.modify = function() {
        alert("in C");
    };

    C.prototype.modify(); // you can call this method where you need to call modify of the parent class
}

C.prototype = new A();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X