Good points. In hindsight, my complaint was more about things currently being a 
bit confusing (one frequently reads that one shouldn’t use instanceof Array) 
than about proposing a specific solution. So the comment below helps.

On May 10, 2012, at 4:53 , Allen Wirfs-Brock wrote:

> The reason there will never be a single solution to these issue is that 
> desirable behavior varies depending  upon what the programmer is trying to 
> accomplish. Just using (possibly cross-frame) arrays an an example.  What is 
> the programmer really asking when they say "is this object an Array".  Do the 
> need to know whether it has array indexed properties and a length property? 
> Do they need to know where it maintains the special Array length invariant? 
> Do they need to know whether it implements it has properties that implement 
> the array extra methods? Do they need to know that in inherits from the 
> build-in array prototype object?  Or, do they just need to know whether they 
> should serialize the object using [ ] instead of {  } notation?
> 
> The last one was the situation that jason2.js ran into WRT cross-frame arrays 
> and it provided the use case that lead to Array.isArray. But it isn't clear 
> that was the best possible solution.  Another solution might have been to add 
> a serializeAsArray property to Array.prototype.  That would work cross frame 
> and it would have made it easier to for programmer to define there own 
> internal abstractions that would also serialize using [ ] notation.
> 
> Whenever anybody says they need to do a type test (or instanceof test) we 
> need to ask them: Why? What is it you really need to know.  Smalltalkers 
> learned fairly early that type/class testing was an anti-pattern. It makes 
> code brittle and difficult to fix or extend. 
> 
> I'm not sure what a cross-frame instanceof test (that didn't always return 
> false) would mean. I understand why json2.js thought it needed to do a 
> cross-frame isArray test.  I would like to understand other real use cases 
> where cross-frame type testing is needed. Does anybody have any?

-- 
Dr. Axel Rauschmayer
[email protected]

home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com

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

Reply via email to