Нет, если вы не сделаете все переменные «общедоступными», т.е. сделаете их членами 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
под этим именем.
Наконец, modify
нельзя выполнить вызов в Function
объявлении, потому что неявный вызов «суперкласса» затем будет выполнен снова, когда мы установим предполагаемый «суперкласс» в prototype
свойство предполагаемых «подклассов».
Но что ж, это более или менее похоже на то, как вы бы делали подобные вещи в JavaScript.
HTH,
FK
modify
это не метод, а вложенная функция - между этими двумя есть разница ...