Якщо тільки ви не зробите всі змінні "загальнодоступними", тобто не зробите їх членами Functionбезпосередньо або через prototypeвластивість.
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( ) ;
Ви помітите кілька змін.
Найголовніше, що виклик передбачуваного конструктора "супер-класів" тепер неявний у цьому рядку:
<name>.prototype = new C ;
Обидва Aі Bтепер матимуть індивідуально модифіковані члени, xі yцього не було б, якби ми писали ... = Cзамість цього.
Тоді x, yі modifyвсе «публічні» члени так , щоб призначити інший Functionдо них
<name>.prototype.modify = function( ) { }
"замінить" оригінал Functionпід такою назвою.
Нарешті, виклик to modifyне може бути здійснений у Functionдекларації, оскільки неявний виклик "супер-класу" буде виконаний знову, коли ми встановимо передбачуваний "супер-клас" у prototypeвластивість передбачуваних "підкласів".
Але добре, це більш-менш як ви робите подібні речі в JavaScript.
HTH,
FK
modifyце не метод, а вкладена функція - між ними є різниця ...