Tüm değişkenleri "genel" yapmazsanız, yani onları Function
doğrudan veya prototype
mülk aracılığıyla "genel" yapmazsanız .
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( ) ;
Birkaç değişiklik fark edeceksiniz.
En önemlisi, varsayılan "süper sınıflar" kurucusuna yapılan çağrı artık bu satırda örtüktür:
<name>.prototype = new C ;
Her ikisi de A
ve B
şimdi bireysel olarak değiştirilebilir üyelere sahip olacak x
ve y
bunun yerine yazacak olsaydık durum böyle olmayacaktı ... = C
.
Sonra, x
, y
ve modify
tüm "kamu" üyeleri yüzden farklı atama olduğunu Function
onlara
<name>.prototype.modify = function( ) { }
Function
bu ada göre orijinali "geçersiz kılacaktır" .
Son olarak, sözde "süper-sınıf" ı varsayılan "alt sınıfların" özelliğine ayarladığımızda "süper-sınıfa" yapılan örtük çağrı tekrar çalıştırılacağından modify
, Function
bildirimde çağrı yapılamaz prototype
.
Ancak, JavaScript'te bu tür şeyleri aşağı yukarı böyle yaparsınız.
HTH,
FK
modify
bir yöntem değil, iç içe geçmiş bir işlev - bu ikisi arasında bir fark var ...