getters en setters in IE werken niet. Nu kreeg ik een idee om getters er toch in te krijgen, namelijk via de toString method van elk object:
propleem is dat als je de property overschrijft dat de boel niet meer werkt, maar dit is iig een leuke start
wat setters betreft: ik had nog geen goed idee, maar wellicht kunnen we iets met de constructor? Als je namelijk doet:
wordt onder water het volgende gedaan:
dit geldt voor elk type, omdat alle typen in js gewoon objecten zijn.
Als op het moment van setten de constructor van dat type net even anders is, dan kan je een setter method uitvoeren lijkt me
any thoughts?
testcase:
Fx alert '2007', 'undefined', '2007', 'undefined'
IE alert '2007', 'undefined', '2008'
(tweede keer wordt de hele bende overschreven en werkt het niet meer)
JavaScript:
1
2
3
4
5
6
7
| if (!Object.__defineGetter__) Object.prototype.__defineGetter__ = function(prop,func) { this[prop] = new Object(); var self = this; this[prop].toString = function() { return func.apply(self); } } |
propleem is dat als je de property overschrijft dat de boel niet meer werkt, maar dit is iig een leuke start
wat setters betreft: ik had nog geen goed idee, maar wellicht kunnen we iets met de constructor? Als je namelijk doet:
code:
1
| obj.prop = 'aStr'; |
wordt onder water het volgende gedaan:
code:
1
| obj.prop = new String('aStr'); |
dit geldt voor elk type, omdat alle typen in js gewoon objecten zijn.
Als op het moment van setten de constructor van dat type net even anders is, dan kan je een setter method uitvoeren lijkt me
any thoughts?
testcase:
JavaScript:
1
2
3
4
5
6
| var d = new Date(); d.year = 2008; d.__defineGetter__('year',function(){alert(this.getFullYear())}); alert(d.year); d.year = 2008; alert(d.year); |
Fx alert '2007', 'undefined', '2007', 'undefined'
IE alert '2007', 'undefined', '2008'
(tweede keer wordt de hele bende overschreven en werkt het niet meer)
[ Voor 18% gewijzigd door Verwijderd op 26-08-2007 09:34 ]