JavaScript klašu mantošana

by Knaģis 26. August 2009 17:40

JavaScript ir gaužām nepateicīga valoda, ja ir vēlme rakstīt objektorientētu kodu. Vienkāršas klases veidot ir vēl salīdzinoši vienkārši (izmantojot funkciju prototipus). Taču jau tik elementāra konstrukcija kā klašu mantošana rada zināmas problēmas. Zemāk ir piemērs vienam no risinājumiem kā, neizmantojot ārējas bibliotēkas, iespējams izveidot klašu mantošanu JavaScript valodā.

// Vienkārša klase ar divām metodēm, no kurām viena tiks pārlādēta.
function BaseClass() { }
BaseClass.prototype.showMessage = function() { alert("BaseClass"); }
BaseClass.prototype.execute = function() { this.showMessage(); }

// Atvasinātā klase
function DerivedClass() { }
// Nosakam, no kuras klases atvasinām
DerivedClass.prototype = new BaseClass();
// saglabājam atsauci, no kuras varēs izsaukt bāzes klases metodes
DerivedClass.prototype.base = BaseClass.prototype;
// Pārlādējam metodi
DerivedClass.prototype.showMessage = function() {
    alert("DerivedClass");
    // izsaucam bāzes klases metodi
    this.base.showMessage.call(this);
}

// Izveidojam atvasinātās klases objektu
var obj = new DerivedClass();
// Izsaucam metodi, ko tā manto no BaseClass
obj.execute();
// execute() parāda divus ziņojumus:
// vispirms "DerivedClass", pēc tam "BaseClass".

Tags:

Programmēšana

Comments are closed

RecentComments

Comment RSS