Tidak, kecuali jika Anda membuat semua variabel "publik", yaitu menjadikannya anggota Function
baik secara langsung atau melalui prototype
properti.
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 A
dan B
sekarang akan memiliki dimodifikasi secara individu anggota x
dany
yang tidak akan terjadi jika kita akan menulis ... = C
sebagai gantinya.
Kemudian, x
, y
dan modify
semua "publik" anggota agar menetapkan berbeda Function
untuk mereka
<name>.prototype.modify = function( ) { }
akan "menimpa" yang asli Function
dengan nama itu.
Terakhir, panggilan ke modify
tidak bisa dilakukan diFunction
deklarasi karena panggilan implisit ke "super-class" kemudian akan dijalankan lagi saat kita menetapkan "super-class" prototype
yang seharusnya ke properti "sub-class" yang seharusnya.
Tapi begini, kurang lebih begini cara Anda melakukan hal semacam ini di JavaScript.
HTH,
FK
modify
bukan metode tetapi fungsi bersarang - ada perbedaan antara keduanya ...