Beste tweakers,
Ik heb een javascript class gemaakt met prototype waar ik een aantal events in heb zitten, hier is een simpele versie van de class:
In _onSayHello is 'this' niet meer het object maar iets anders (het htmldocument)
Ik kan nu wel elke keer een functie eromheen schrijven zoals:
Maar dan kan ik net zo goed alles in closure schrijven en heel het microsoft ajax framework niet gebruiken. Ik ben al verschillende keren tegen dit soort problemen aangelopen en al deze problemen heb je geen last van als je alles met closure opbouwt, bovendien is de code dan ook nog een stuk beter te lezen.
Weet iemand de rede waarom microsoft er voor gekozen heeft om prototypes te gaan gebruiken imp. closure? in het begin toen het nog atlas hete was het volgens mij wel allemaal closure.
De call methode gebruik ik ook liever niet om dit op te lossen. Ik ben opzoek naar een nette oplossing.
Ik heb een javascript class gemaakt met prototype waar ik een aantal events in heb zitten, hier is een simpele versie van de class:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| var EventTest = function(value) { this._value = value; }; EventTest.prototype = { initialize: function() { $addHandler(document, "click", this._onSayHello); }, dispose: function() { $removeHandler(document, "click", this._onSayHello); }, _onSayHello: function(e) { alert(this._value); } }; |
In _onSayHello is 'this' niet meer het object maar iets anders (het htmldocument)
Ik kan nu wel elke keer een functie eromheen schrijven zoals:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
| sayHello: function() { var self = this; function onSayHello(e) { alert(self._value); } $addHandler(document, "click", onSayHello); } |
Maar dan kan ik net zo goed alles in closure schrijven en heel het microsoft ajax framework niet gebruiken. Ik ben al verschillende keren tegen dit soort problemen aangelopen en al deze problemen heb je geen last van als je alles met closure opbouwt, bovendien is de code dan ook nog een stuk beter te lezen.
Weet iemand de rede waarom microsoft er voor gekozen heeft om prototypes te gaan gebruiken imp. closure? in het begin toen het nog atlas hete was het volgens mij wel allemaal closure.
De call methode gebruik ik ook liever niet om dit op te lossen. Ik ben opzoek naar een nette oplossing.
[ Voor 0% gewijzigd door Verwijderd op 16-10-2008 17:54 . Reden: foutje in code ]