[Laszlo-dev] implementing addProperty on LzNode

P T Withington ptw at pobox.com
Tue Jan 8 07:23:40 PST 2008


I think the right approach is to make a singleton class for any  
instance that defined methods.

On 2008-01-08, at 10:05 EST, Henry Minsky wrote:

> For classes, we can eventually make it
> so that all the methods and handlers (including the anonymous ones)
> are declared at compile time in
> a class declaration.
>
> But what about views (i.e., instances rather than class declarations).
> Maybe we say that they cannot
> reference super() in their methods or handlers? That would be  kind of
> confusing. Especially as we
> promote this style of programming where you first make methods on your
> instance, and then
> convert it to a class later. If you can't refer to super() in your
> methods, you're somewhat restricted
> for more sophisticated programming.
>
>
> If a view has some methods or handlers declared, they get stuck into
> the initial attributes list
> as functions, like
>
>    <view bgcolor="blue" width="40" height="40"
>          x="59" y="59"
>          onclick="this.setAttribute('x', 10);
>                   this.setAttribute('y', 10)"/>
>
> {$delegates: ["onclick", "$m3", null], $m3: function
>        $hello$2Elzx_15_50_$m3 () {
>        this.setAttribute('x', 150);
>        this.setAttribute('y', 10)
>            },
>
>
> One thought I had at one point was to convert every view that declares
> methods or handlers into
> a singleton class declaration, that seems like a pretty major step,
> but maybe it's necessary!
>
>
> Another thought;
> I guess  that for each user-class, the compiler could collect up all
> the methods that are declared on all instances of that class,
> and carefully map them to unique names and define them on the class,
> but that seems a little
> awkward. That seems even worse that making a singleton class for
> instances that define methods.
>
>
>
> On Jan 8, 2008 9:49 AM, P T Withington <ptw at pobox.com> wrote:
>> That's a good question.  You would have to test if super will work.
>> My guess would be that it will not because I would think that only
>> 'fixed' methods could participate in the class structure (i.e., that
>> the super method is computed at compile time).
>>
>> Isn't this only needed because the tag compiler is not emitting class
>> declarations?  I would hope that when the tag compiler emits class
>> declarations, it would declare all the methods.
>>
>>
>> On 2008-01-08, at 09:26 EST, Henry Minsky wrote:
>>
>>> The (Laszlo) Class.addProperty method is used by LzNode to install
>>> methods dynamically.
>>> I've got it implemented just as
>>>
>>>   function addProperty(key:*,val:*):void {
>>>       this[key] = val;
>>>   }
>>>
>>> in the LzNode swf9 development world right now. Is there anything
>>> else we need to when adding functions at runtime that refer to
>>> superclass methods (or "super()" )
>>> or will that "just work"?
>>>
>>> --
>>> Henry Minsky
>>> Software Architect
>>> hminsky at laszlosystems.com
>>
>>
>
>
>
> -- 
> Henry Minsky
> Software Architect
> hminsky at laszlosystems.com



More information about the Laszlo-dev mailing list