On Jun 30, 2010, at 10:05 AM, Jürg Lehni wrote:

> I am still interested in hearing more feedback on this. Maybe my examples 
> were not so clear?
> 
> As more real world example, taken from a UI library that I am working with, 
> would look like this:
> 
>       var stopButton = new ImageButton(this) {
>               image: getImage('stop.png'),
>               size: buttonSize,
>               toolTip: 'Stop Running Scripts',
>               onClick: stopAll
>       };
> 
> 
> Again, all the properties from the object literal immediately following the 
> constructor call would then be set on the created object.
> 
> Rhino allows me to use this already and it has been proven to be very useful 
> in many occasions, leading to cleaner and more readable code.

Some of us old-timers were around at Netscape with Norris Boyd when this was 
designed and added to Rhino. It was not added to SpiderMonkey, though, for not 
terribly compelling reasons.

I remember being concerned about the ASI issue, which requries a [no 
LineTerminator here] restricted production. That is still a concern: the TC39 
committee doesn't want to add restricted productions without very good reason.

This came up later, via https://bugzilla.mozilla.org/show_bug.cgi?id=253138 -- 
see https://bugzilla.mozilla.org/show_bug.cgi?id=253138#c7. 
https://bugzilla.mozilla.org/show_bug.cgi?id=253138#c10 suggests an operator of 
some sort to "merge" the objects.

Another point to note is that [1,2,3] is not equivalent to new Array(3) {0:1, 
1:2, 2:3}, because the array initialiser form users the original value of 
Array.prototype, and it does not call the current binding of Array as a 
constructor.

So, more work needed to avoid a restricted production, at least. A linking 
operator or keyword ("with" a la functional record update) would help.

/be

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to