Nie, chyba że uczynisz wszystkie zmienne „publicznymi”, tj. Uczynisz je członkami Functionalbo bezpośrednio, albo przez prototypewłaściwość.
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( ) ;
Zauważysz kilka zmian.
Co najważniejsze, wywołanie rzekomego konstruktora „superklas” jest teraz niejawne w tym wierszu:
<name>.prototype = new C ;
Zarówno Ai Bbędzie teraz mieć indywidualnie modyfikowalnych członków xi yktóre nie byłoby w przypadku, gdyby pisaliśmy ... = Czamiast.
Następnie x, yi modifywszystkie są „publiczne” Członkowie tak że przypisywanie innym Functiondo nich
<name>.prototype.modify = function( ) { }
zastąpi oryginał Functiontą nazwą.
Wreszcie, wywołanie do modifynie może być wykonane w Functiondeklaracji, ponieważ niejawne wywołanie „superklasy” byłoby następnie wykonane ponownie, gdy przypuszczaliśmy „superklasę” na prototypewłasność rzekomej „podklasy”.
Ale cóż, tak mniej więcej można to zrobić w JavaScript.
HTH,
FK
modifynie jest metodą, ale funkcją zagnieżdżoną - jest różnica między tymi dwoma ...