No, a meno che tu non renda tutte le variabili "pubbliche", cioè le rendi membri di Functiondirettamente o tramite la prototypeproprietà.
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( ) ;
Noterai alcuni cambiamenti.
Ancora più importante, la chiamata al presunto costruttore di "superclassi" è ora implicita all'interno di questa riga:
<name>.prototype = new C ;
Entrambi Ae Bora avranno membri modificabili individualmentex e yche non sarebbe il caso se avessimo ... = Cinvece scritto .
Poi, x, ye modifysono tutti i membri del "pubblico" in modo che l'assegnazione di un diverso Functionper loro
<name>.prototype.modify = function( ) { }
"sovrascriverà" l'originale Functioncon quel nome.
Infine, la chiamata a modifynon può essere eseguita nella Functiondichiarazione perché la chiamata implicita alla "superclasse" verrebbe quindi eseguita di nuovo quando impostiamo la presunta "superclasse" sulla prototypeproprietà delle presunte "sottoclassi".
Ma beh, questo è più o meno come faresti questo genere di cose in JavaScript.
HTH,
FK
modifynon è un metodo ma una funzione annidata - c'è una differenza tra questi due ...