Ga naar inhoud

jscript oo


Aanbevolen berichten

function baseClass() { this.method = function () { alert('base'); }; } function extendedClass() { baseClass.call(this) this.method = function () { extendedClass.prototype.method();//!!!!!! alert('extended'); }; } extendedClass.prototype = new baseClass(); class1 = new baseClass(); class2 = new extendedClass(); class1.method(); class2.method(); /Eelco
Link naar reactie
indien ik op dergelijke manier m'n 'klassen' ga schrijven... ik had begrepen dat je een methode in javascript aan de prototype-property v/d 'klasse' moest toewijzen opdat niet iedere instantie met een eigen kopie v/d methode referentie geïnitialiseerd werd. (ooit ergens in de netscape documentatie gelezen) onderstaand een triviaal(!) voorbeeld. het gaat om de toString methode. uiteraard zijn er volop andere mogelijkheden om hier eea (zelfs netter) op te lossen maar toch... [code:1:7730bf56b6] function Exception(id, info, source) { this._id = id || 1; this._info = info || "unspecified"; this._source = source || "unspecified"; this._date = new Date(); if (this._Exception_prototyped) return; Exception.prototype._Exception_prototyped = true; Exception.prototype.setId = function(id) { this._id = id; } Exception.prototype.getId = function() { return this._id; } Exception.prototype.setInfo = function(info) { this._info = info; } Exception.prototype.getInfo = function() { return this._info; } Exception.prototype.setSource = function(source) { this._source = source; } Exception.prototype.getSource = function() { return this._source; } Exception.prototype.setDate = function(date) { this._date = date; } Exception.prototype.getDate = function() { return this._date; } Exception.prototype.toString = function() { var strval = ""; var i = 0; for (var p in this) if (typeof this[p] != "function") { if (i++) strval += ','; strval += p + '=' + this[p]; } return "Exception[" + strval + ']'; } } function DBException(id, info, source, state) { this._DBException_baseobj = Exception; this._DBException_baseobj(id, info, source); delete this._DBException_baseobj; this._state = state || "00000"; if (this._DBException_prototyped) return; DBException.prototype._DBException_prototyped = true; DBException.prototype.setSqlState = function(state) { this._state = state; } DBException.prototype.getSqlState = function() { return this._state; } DBException.prototype.toString = function() { return "DBException[" + ***.toString() + ",_state=" + this._state + ']'; } } DBException.prototype = new Exception; [/code:1:7730bf56b6]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...