Sauf si vous rendez toutes les variables "publiques", c'est-à-dire en les rendant membres de Function
la prototype
proprié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 A
et B
auront désormais des membres individuellement modifiablesx
et y
ce qui ne serait pas le cas si nous avions écrit à la ... = C
place.
Ensuite, x
, y
et que modify
tous les membres « publics » afin que l' attribution d' un autre Function
pour les
<name>.prototype.modify = function( ) { }
"remplacera" l'original Function
par ce nom.
Enfin, l'appel à modify
ne peut pas être fait dans la Function
déclaration car l'appel implicite à la "super-classe" serait alors à nouveau exécuté lorsque nous positionnerions la "super-classe" prototype
supposé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
modify
n'est pas une méthode mais une fonction imbriquée - il y a une différence entre ces deux ...