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