"Lars" <lsolesen@gmail.com> writes:
> Følgende scriptstump bliver ved med at påstå at this.apply ikke er
> en funktion,
Så er det nok rigtigt.
> men hvordan henviser jeg så til funktioner i en klasse?
Der er ikke klasser i Javascript. Prototype.js-biblioteket forsøger
at lave noget der ligner, men jeg kan ikke sige hvad de forsøger
at opnå.
Lad os se på hvad du forsøger at gøre ...
> Jeg bruger prototype.
Det bliver det nok ikke nemmere af. (Det er ikke en af mine favoritter).
> var ConfirmBoxes = Class.create();
>
> ConfirmBoxes.prototype = {
>
> initialize: function() {
> // void
> },
>
> init: function() {
> this.apply('confirm');
> this.apply('delete');
Her har vi formodentlig synderen.
Hvis denne funktion kaldes som et metode på et ConfirmBoxes-objekt,
så vil den have en apply-funktion, jvf følgende funktion:
> },
>
> apply: function(sClass) {
Det er bare ikke tilfældet. Funktionen kaldes som en rå funktion
der ikke er en metode på noget objekt (eller sandsyligvis som
en metode på 'window'-objektet):
> Event.observe(window, "load", myConfirmBoxes.init);
Her giver du den rå funktion med som tredje-argument. Funktionsværdien
der giver med har *ingen* forbindelse til myConfirmBoxes.
Du kunne bruge prototype.js-metoden bind:
Event.observe(window, "load", myConfirmBoxes.init.bind(myConfirmBoxes));
(eller endda:
Event.observe(window, "load",
myConfirmBoxes.init.bindAsEventListener(myConfirmBoxes));
hvor metoden får event'en med som argument, hvilket denne metode
dog er ligeglad med.)
HTH, HAND!
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'