The setters merging would normally only occur in the class  
initialization, right?  So that won't have much impact.  In the  
LzNode constructor when it builds the instance init args from the  
passed attributes and the default attributes, that happens for every  
instance.  Copying there would be more overhead.  Not sure I see a  
way around it.

And can you explain what maskedargs is?  Naively it seems like it is  
just a copy of the instance args.

On 2006-05-22, at 13:53 EDT, Adam Wolff wrote:

> merging should be sufficient, but I'm concerned about performance  
> doing
> this for instances. we copied setters and such to the subclass at
> inherit-time for the legals demo.
>
> A
>
>
>
>
>
>
> On May 22, P T Withington wrote:
>
>> The LFC in several places uses the idiom of smashing an object's  
>> __proto__ to
>> another object as an 'efficient' way of merging dictionaries.   
>> There are two
>> issues with this:
>>
>> 1) Standard ECMAscript provides no way to change your prototype  
>> after the fact
>>
>> 2) You can't use hasOwnProperty for `containsKey`
>>
>> We can often work around 1 because often the smashing happens when  
>> creating a
>> new empty dictionary that inherits.  2 is important because using  
>> `in` for
>> `containsKey` will erroneously make it appear that all your  
>> dictionaries
>> contain 'toString', 'value', and other properties of  
>> Object.prototype.
>>
>> I'd like to propose we define an LzDictionary class with methods  
>> containsKey,
>> get, put, addAll, etc. and use that instead.  This will make our  
>> code more
>> portable (although there will be some overhead).
>>
>> My only fear is that there is some expectation that setters in  
>> particular
>> depend on actually inheriting from the parent class, that you are  
>> allowed to
>> dynamically add a setter to a base class and have it show up in  
>> all derived
>> classes.  Is this so?  (There is __proto__ magic in attrs and  
>> default attrs
>> too with merging of Array attributes and inheriting of Object  
>> attributes.
>> Does this inheritance need to happen too, or is merging sufficient?
>>

_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev

Reply via email to