Misschien als aanloopje naar de W&G Actionscript-dag:
Welke Flash-versie gebruiken jullie en hoe doen jullie daarin aan inheritance? Op de WiKi-mailing list op Figleaf worden er 4 methodes voorgesteld, waarvan ik zelf alleen de eerste 2 al ooit gebruikt had.
Zelf gebruik ik optie b, gewrapt in Object.prototype.extend, zodat ik in onovertroffen OO-stijl iets kan doen als
Het nadeel hiervan is dat dit afaik niet mogelijk is in Flash 5, omdat het Functie-object daar niet bestaat en dus ook de extend, die op Object gedefinieerd is, niet.
Misschien is het in hetzelfde kader ook interessant om te kijken naar hoe men met #include omspringt (om bv meervoudige includes te vermijdes) en de organisatie van bibliotheken (gebruik van namespaces?). Maar goed, die starten we dan wel op als er hier voldoende gereageerd wordt.
Om te besluiten dus de vraag:
Hoe doe jij in jouw Flash-versie aan inheritance?
Welke Flash-versie gebruiken jullie en hoe doen jullie daarin aan inheritance? Op de WiKi-mailing list op Figleaf worden er 4 methodes voorgesteld, waarvan ik zelf alleen de eerste 2 al ooit gebruikt had.
| A | Een functie (constructor) voor het Child type aanmaken, een Parent object aanmaken en deze laatste toekennen aan het Child.prototype: [code=as]function Child() {}; Child.prototype = new Parent();[/code]Nadeel: Er wordt een onnodige instantie van de Parent aangemaakt, die ook nog eens alle tot dan toe aangemaakte members van Child.prototype uitveegt. | |
| B | Een functie (constructor) voor het Child type aanmaken en de __proto__ en __constructor__ van Child.prototype laten verwijzen naar respectievelijk Parent.prototype en Parent. [code=as]function Child() {}; Child.prototype.__proto__ = Parent.prototype; Child.prototype.__constructor__ = Parent;[/code]Uitleg: __proto__ geeft aan wat het volgende object (lees: class) in de prototype chain (lees: klasse-hiërarchie) is. __constructor__ wordt volgens de link gebruikt voor het functioneren van super. Nadeel: __proto__ en __constructor__ zijn geen ECMA en verdwijnen mogelijkerwijs in volgende Flash versies. Dit lijkt me echter niet wsch omdat ik vermoed dat veel AS-ers het gebruiken. |
Zelf gebruik ik optie b, gewrapt in Object.prototype.extend, zodat ik in onovertroffen OO-stijl iets kan doen als
Flash ActionScript:
1
| Child.extend(Parent); |
Het nadeel hiervan is dat dit afaik niet mogelijk is in Flash 5, omdat het Functie-object daar niet bestaat en dus ook de extend, die op Object gedefinieerd is, niet.
Misschien is het in hetzelfde kader ook interessant om te kijken naar hoe men met #include omspringt (om bv meervoudige includes te vermijdes) en de organisatie van bibliotheken (gebruik van namespaces?). Maar goed, die starten we dan wel op als er hier voldoende gereageerd wordt.
Om te besluiten dus de vraag:
Hoe doe jij in jouw Flash-versie aan inheritance?
Wij onderbreken deze thread voor reclame:
http://kalders.be