Sauf si vous rendez toutes les variables "publiques", c'est-à-dire en les rendant membres de Functionla prototypepropriété soit directement, soit via la propriété.
var C = function( ) {
this.x = 10 , this.y = 20 ;
this.modify = function( ) {
this.x = 30 , this.y = 40 ;
console.log("(!) C >> " + (this.x + this.y) ) ;
} ;
} ;
var A = function( ) {
this.modify = function( ) {
this.x = 300 , this.y = 400 ;
console.log("(!) A >> " + (this.x + this.y) ) ;
} ;
} ;
A.prototype = new C ;
var B = function( ) {
this.modify = function( ) {
this.x = 3000 , this.y = 4000 ;
console.log("(!) B >> " + (this.x + this.y) ) ;
} ;
} ;
new C( ).modify( ) ;
new A( ).modify( ) ;
new B( ).modify( ) ;
Vous remarquerez quelques changements.
Plus important encore, l'appel au constructeur supposé "super-classes" est désormais implicite dans cette ligne:
<name>.prototype = new C ;
Les deux Aet Bauront désormais des membres individuellement modifiablesx et yce qui ne serait pas le cas si nous avions écrit à la ... = Cplace.
Ensuite, x, yet que modifytous les membres « publics » afin que l' attribution d' un autre Functionpour les
<name>.prototype.modify = function( ) { }
"remplacera" l'original Functionpar ce nom.
Enfin, l'appel à modifyne peut pas être fait dans la Functiondéclaration car l'appel implicite à la "super-classe" serait alors à nouveau exécuté lorsque nous positionnerions la "super-classe" prototypesupposée à la propriété des "sous-classes" supposées.
Mais bon, c'est plus ou moins comment vous feriez ce genre de chose en JavaScript.
HTH,
FK
modifyn'est pas une méthode mais une fonction imbriquée - il y a une différence entre ces deux ...