On Tue, Nov 20, 2012 at 2:45 PM, Tab Atkins Jr. <jackalm...@gmail.com>wrote:

> On Mon, Nov 19, 2012 at 9:46 PM, Brendan Eich <bren...@mozilla.com> wrote:
> > Tab Atkins Jr. wrote:
> >> If we did this, the only reason to continue subclassing Map is to get
> >> instanceof checks to work.  Is this acceptable?
> >
> > I think it's either irrelevant (no one tests 'aUrlQuery instanceof Map')
> or else a potential problem (cross-frame instanceof).
>
> People *do* perform those checks, though.  For example, in a method
> that accepts either an array or other things, a quick "foo instanceof
> Array" check is a clear, easy way to check what you've got.


Be careful there, it's incredibly rare to see code that does that—which is
why Array.isArray was created and is generally shimmed with some version of
({}).toString.call(arg).slice(8, -1) === "Array"... instanceof is generally
viewed (whether correctly or not) as "broken".



> It suffers
> from cross-frame issues, but shrug.  Similar checks will proliferate
> as people write methods that take generic Maps.
>

For the same reason as previously stated, I predict that popular libraries
will simply add "isMap" to their offerings and the implementation will look
similar to the pattern I showed earlier.


>
> (On the other hand, they might instead just feature-test for the
> existence of items(), and then use it as an iterable, in which case
> this would be a non-issue.  Depends on the use-case, I suppose.)
>


Probably not since that will result in a lot of false positives when:

let o = { items: function() {} };

would pass that test.



Rick






>
>
> > Where I would like to go, if you force me to pick a promising path:
> >
> > http://disnetdev.com/contracts.coffee/#duck
> >
> http://disnetdev.com/blog/2011/09/05/Duck-Typing-Invariants-In-contracts.coffee/
>
> That's my preferred direction, too, but I suspect that's far off.  It
> doesn't even have a strawman yet, does it?
>
> ~TJ
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to