A não ser que você torne todas as variáveis "públicas", isto é, torne-as membros do Functiondiretamente ou por meio da prototypepropriedade.
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( ) ;
Você notará algumas mudanças.
Mais importante ainda, a chamada ao suposto construtor de "superclasses" agora está implícita nesta linha:
<name>.prototype = new C ;
Ambos Ae Bagora terão membros modificáveis individualmentex e yque não seria o caso se tivéssemos escrito em ... = Cvez disso.
Em seguida, x, ye modifysão todos os membros "públicas" de modo a que a atribuição de um diferente Functionpara eles
<name>.prototype.modify = function( ) { }
irá "substituir" o original Functioncom esse nome.
Por último, a chamada para modifynão pode ser feita na Functiondeclaração porque a chamada implícita para a "superclasse" seria então executada novamente quando configurássemos a suposta "superclasse" para a prototypepropriedade das supostas "subclasses".
Mas bem, é mais ou menos assim que você faria esse tipo de coisa em JavaScript.
HTH,
FK
modifynão é um método, mas uma função aninhada - há uma diferença entre os dois ...