Re: FileList (and other Array-like types)

On 30/05/2013 16:19 , Boris Zbarsky wrote:
> On 5/30/13 5:41 AM, Robin Berjon wrote:
>> This includes mutating them, and
>> behaving sanely in the face of mutation.
>
> A question is what constitutes sanity.

Which is why I brought it up :)

>> I'm very partial to C. The 5 should get pushed onto the array, and
>> whenever I look there in future it should still be right there, but any
>> control that is reflecting the status of that array should just ignore
>> it.
>
> As opposed to just throwing an exception and being broken?  That might
> be expensive to do.

I reckon that depends on where. I somehow doubt that making FileList 
behave like an array with UI binding would be all that expensive, but I 
guess it could be the case with other uses of live lists.

My point is that things that are arrays should be arrays as much as 
possible — the alternative is maddening. Ideally, that would include not 
blowing up when putting something into them. But if there is good reason 
to throw on invalid values, then so long as for all other purposes it's 
an array that's viable.

Throwing is also better than silently not pushing the value (as opposed 
to putting it in the array but ignoring it for behaviour). That sort of 
behaviour leads to strange debugging experiences.

>> All the libraries that do data binding (e.g. Angular, KnockOut) will do
>> something like that.
>
> What do they do if you push bogus values into the array?

As you might expect, there are as many different behaviours as are possible.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon

Received on Thursday, 30 May 2013 14:46:39 UTC