www.fanxezer.tk-ya xoş gəlmisiniz! Çərşənbə, 2024-04-24, 7:22 AM
AzNetin ən yaxşı əyləncə saytı
       
Menyu

Bolmə
HTML [6]
Delphi [2]
PHP [5]
Javascript [4]
İnternet [3]
ASP [0]
Photoshop [3]
Power point [3]
Excel [3]
CSS [3]
Word [3]

Mini çat


Sorğu
Saytımızın dizaynı xoşunuza gəlirmi?
Cəmi səs sayı: 526

 
Statistika

Hal-hazırda saytda: 1
Qonaqlar: 1
İstifadəçilər: 0

  


Əsas » Fayllar » Komputer bilgiləri » Javascript

Prototip istifadə etmək
[ ] 2010-03-13, 6:59 PM

İstifadəçi Sinifi: Prototip istifadə etmək

   Çıxış var – obyektin prototipini istifadə edin və xassə əlavə edin.
   Prototip – bu bir növ obyektin sinfinə istinaddır. JavaScriptdə olan bütün siniflərin (hətta javascript-in daxili siniflərinin) prototype adlı xassəsi var və onun prototipini göstərir. Prototipi sinfi genişləndirmək üçün istifadə edirik.
   Obyektə xassə əlavə etmək üçün aşağıdakı kodun əvəzinə
somePoint.radius = 0.5;
   yeni xassəni onun prototipinə daxil edək(istənilən sinfə məxsus olan prototype xassəsini istifadə edərək):
Point.prototype.radius = 0.5;
   İndi isə Point sinfindən olan bütün obyektlərin radius xassəsi var. Lakin ancaq somePoint obyektinin radius xassəsi 0.5-ə mənimsədilib, digər obyektlərdə isə bu qiymət təyin olunmayıb.
   Biz həmçinin daxili sinifləri də dəyişə bilərik, xassə və metod əlavə edə bilərik. Məsələn Math sinfinə lazımi riyazi funksiyalar və konstantalar əlavə edə bilərik.
   Lakin prototipi digər məqsədlər üçün də istifadə etmək olar. Məsələn biz sinfi irsən ala bilərik. Misal üzərində izah edək.
   Tutaq ki, biz Point sinfinə bir neçə yeni xassə əlavə etmək istəyirik. Bu hansı şəkildə edək? Əlavə olunacaq bütün yeni xassələri həmin sinifdən olan hər hansı obyektə növbə ilə əlavə etmək olar, lakin bu çox da yaxşı deyil. Bunu başqa cür edək. Yeni SuperPoint nöqtə sinfi yazaq və bu sinifdə köhnə Point sinfinin bütün xassə və metodlarını irsən alaq. SuperPoint sinfi Point sinfinin varisi olacaq və valideyninin (və ya əcdadının) bütün xassə və metodlarını istifadə edə biləcək. Bu şəkildə biz iki nöqtə sinfinə malik olacağıq: sadə və təkmilləşdirilmiş.
   Əvvəlcə SuperPoint sinfini və onun bütün yeni xassələrini təyin edək. Və bizim koda sətir-sətir baxaq.
function SuperPoint(x, y, color, radius, edgeColor)
{
   Bura qədər hər şey aydındır. Yeni sinif üçün konstruktor funksiyası təyin etdik. Qetd edək ki, konstruktorun parametr siyahısında həm yeni xassələri elan etdik, həm də irsən valideyn sinifdən alınan xassələri elan etdik.
this.base = Point;
this.base(x, y, color);
   Biz SuperPoint sinfinin yeni base xassəsini təyin etdik və ona Point sinfinin konstruktoruna göstərici mənimsətdik. Bundan sonra valideyn sinfin konstruktorunu tələb olunan parametrləri verərək çağırdıq. Bu çağırmanın nəticəsində valideyn sinifdən irsən alınan bütün xassələr qiymət aldı. Base xassəsinin adı burada bir rol oynamır, yalnız rahatlıq üçün belə seçilib.
this.radius = radius || 0.5;
this.edgeColor = edgeColor || "black";
   Burada isə yeni xassələrə ilkin qiymət veririk. Bu xassələr üçün susmaya görə qiymət təyin olunduğuna diqqət yetirin. Bu susmaya görə təyin olunan qiymətlər, əgər bizim bu sinfi istifadə edən proqramçı təyin olunan qiymətlərdən birini (və ya ümumiyyətlə heç birini) konstruktora verməzsə istifadə olunur. Susmaya görə qiymət yaxşı stil proqramlaşdırmadır.
}
SuperPoint.prototype = new Point;
   Qeyd edək ki, bu sətir konstruktorun gövdəsindən kənarda yerləşir.
   Artıq indi yeni sinifdən obyekt yarada və onun yeni xassələri kimi, irsən alınan xassələrini də istifadə edə bilərik.
var obj;
obj = new SuperPoint(100, 100, "green”, 0.6);
   Burada biz konstruktora bütün parametrləri vermədik, lakin bu qəribə deyil, axı biz xassə üçün susmaya görə qiymətə baxmışıq.
obj.radius = Math.SQRT(5); 
   İndi biz SuperPoint sinfinin yeni xassəsinə müraciət etdik və ona 5-in kvadratı qiymətini mənimsətdik.
a = obj.x + 20;
   İndi isə Point sinfindən irsən alınan xassəyə müraciət etdik.
   Biz valideyn sinfindən irsən alınan istənilən xassə və ya metodu yenidən təyin (override) edə bilərik. Daha bir sadə misala baxaq.
function SuperPuperPoint(x, y, color, radius, edgeColor)
{
this.base = SuperPoint;
this.base(x, y, color, radius, edgeColor);
this.isPointInBounds = isPointInBounds2;
   Burada biz isPointInBounds xassəsinə digər isPointInBounds2 funksiyasına göstərici mənimsədərək isPointInBounds metodunu yenidən təyin etdik.
}
SuperPuperPoint.prototype = new SuperPoint;
   Və bizim yeni sinfin valideynini göstərməyi unutmayın.
   Point, SuperPoint və SuperPuperPoint siniflərinin tam kodları aşağıda verilmişdir.
<HTML>
<HEAD>
<TITLE>
Class Test
</TITLE>
<script language="JavaScript">
// Begin Declaration Point class
function Point(x, y, color)
{
this.x = x || 100;
this.y = y || 50;
this.color = color || "black”;
this.isPointInBounds = isPointInBounds;
}

function isPointInBounds()
{
if(this.x>0 && this.x<400)
{
return (this.y>0 && this.y<200);
}
else
{
return false;
}
}
// End Declaration Point class

// Begin Declaration SuperPoint class
function SuperPoint(x, y, color, radius, edgeColor)
{
this.base = Point;
this.base(x, y, color);
this.radius = radius || 0.5;
this.edgeColor = edgeColor || "black”;
}
SuperPoint.prototype = new Point;
// End Declaration SuperPoint class

// Begin Declaration SuperPuperPoint class
function SuperPuperPoint(x, y, color, radius, edgeColor)
{
this.base = SuperPoint;
this.base(x, y, color, radius, edgeColor);
this.isPointInBounds = isPointInBounds2;
}
SuperPuperPoint.prototype = new SuperPoint;

function isPointInBounds2()
{
if(this.x>0 && this.x<300)
{
return (this.y>0 && this.y<300);
}
else
{
return false;
}
}
// End Declaration SuperPuperPoint class

</script>
</HEAD>

<BODY>
</BODY>
</HTML>

Bölmə: Javascript | Müəllif: FanXezer | Açar sözlər: Javascript derslik
Baxış sayı: 648 | Yükləmələr: 0 | Reytinq: 5.0/1 |
Cəmi şərhlər: 0

ss=commTable border=0 cellSpacing=1 cellPadding=2 width="100%">
Adınız *:
Email:
Təhlükəsizlik kodu *:
Giriş

Axtar

Arxiv


Müalicə pulunuz bir stəkan süd ilə ödənilmişdir

17 Noyabr-Dirçəliş günü

Içki və içki içənlər barədə ayə və hədislər!

Lətifələr

Süleyman peyğəmbər və qarışqa hekayəsi

Ağ çörəyin təhlükəsi

Eyfel qülləsi haqqında

Tək Səbir - Toy Klipi


Dost saytlar
  • Xəzər-Lənkəranan fanat saytı
  • Internetin ən gizli saytı
  • İslam, Haqq Din

  • Namaz vaxtları


    Reklam


    Məlumatlar
    IP adresiniz -3.15.156.140

    Nikiniz - Qonaq

    Statusunuz: Guests

    Ad gununuz -

    Bu gun ad gunu olanlar:

    Qeydiyyat tarixiniz:

    Sizin brauzeriniz:  

    Admin: FanXezer

    Hava haqqında

    Copyright Hazırladı:FanXezer © 2024
    Free web hostinguCoz -->