Tidak, kecuali jika Anda membuat semua variabel "publik", yaitu menjadikannya anggota Function baik secara langsung atau melalui prototypeproperti.
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( ) ;
Anda akan melihat beberapa perubahan.
Yang terpenting, panggilan ke konstruktor "kelas super" yang seharusnya sekarang tersirat dalam baris ini:
<name>.prototype = new C ;
Kedua Adan Bsekarang akan memiliki dimodifikasi secara individu anggota xdany yang tidak akan terjadi jika kita akan menulis ... = Csebagai gantinya.
Kemudian, x, ydan modifysemua "publik" anggota agar menetapkan berbeda Functionuntuk mereka
<name>.prototype.modify = function( ) { }
akan "menimpa" yang asli Function dengan nama itu.
Terakhir, panggilan ke modifytidak bisa dilakukan diFunction deklarasi karena panggilan implisit ke "super-class" kemudian akan dijalankan lagi saat kita menetapkan "super-class" prototypeyang seharusnya ke properti "sub-class" yang seharusnya.
Tapi begini, kurang lebih begini cara Anda melakukan hal semacam ini di JavaScript.
HTH,
FK
modifybukan metode tetapi fungsi bersarang - ada perbedaan antara keduanya ...