Filip Pizlo <mailto:[email protected]>
September 4, 2013 4:45 PM

On Sep 4, 2013, at 2:41 PM, Brendan Eich <[email protected] <mailto:[email protected]>> wrote:

Filip Pizlo wrote:
I agree that both of these aspects of binary data are quirky. My observation is that prohibiting custom properties doesn't fix the underlying issue.

[snip]
   var MyArray = new ArrayType(...);
   var MyStruct = new ArrayType({f: MyArray});
   var struct = new MyStruct(...);
   var array1 = struct.f;
   var array2 = struct.f;

then `array1` and `array2` would have disjoint sets of extensible
properties.]

Yes, they would. But even if they didn't, then array1 != array2, which is equally odd.

Both adds up to two, not one, so the counterargument is odd beats odder, and prohibiting expandos keeps the oddness down to == and nothing else.

What about being consistently odd? To me, 'struct.f' means allocating a new [sic] array buffer view object. That new object thus has all of the features you'd expect from a new object: it won't have custom properties, it will have some default prototype, and it will not be == to any other object. Hence if you say "struct.f.foo = 42", then "struct.f.foo" will subsequently return undefined. No big deal - it was a new object.

In WebIDL, IIRC, this is considered bad style. You are supposed to use a method, not an IDL attribute (getter), when returning a fresh object each time. Anne can vouch, cc'ing him.

I'm not saying we must match WebIDL good style -- doing so would mean binary data does not support interior extractions via struct.foo.bar -- rather something awful such as struct.foo().bar, which won't fly. But it seems worth considering that the "odd" or "bad style" design decision is upstream of our petty difference over expandos.

But "lost expandos" due to loss of identity are an especially nasty kind of bug to find.

I'm actually curious - are you aware of such bugs, and what do they actually look like?

Search for "disappearing expando" on the web.

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

Reply via email to