<div>
                    <span style="font-size: 14px;">Most recently I needed that to do polymorphic function dispatch on input argument type. More specifics can be found here:</span>
                </div><div>https://github.com/Gozala/method/blob/master/core.js#L121-127</div>
                <div><div><br></div><div><span style="font-size: 14px;">This case may be quite exotic, but I remember running into this quite a lot, can't use cases unfortunately. </span><span style="font-size: 14px; ">BTW underscore has bunch of this utilities too: </span>http://underscorejs.org/#objects that making me believe it's common enough case.</div><br clear="all">Regards<br><span style="color:rgb(153, 153, 153)">--</span><br style="color:rgb(153, 153, 153)"><span style="color:rgb(153, 153, 153)">Irakli Gozalishvili</span><br style="color:rgb(153, 153, 153)"><span style="color:rgb(153, 153, 153)">Web: <a style="color:rgb(153, 153, 153)" href="http://www.jeditoolkit.com/" target="_blank">http://www.jeditoolkit.com/</a></span><font color="#999999"><br></font><div><br></div></div>
                 
                <p style="color: #A0A0A8;">On Monday, 2012-10-15 at 17:59 , Brendan Eich wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><div>Just curious: why did you need a nominal type test, rather than a "duck </div><div>type" test?</div><div><br></div><div>/be</div><div><br></div><div>Irakli Gozalishvili wrote:</div><blockquote type="cite"><div><div>Hi,</div><div><br></div><div>Today I had to deal with a value type detection in JS and that </div><div>reminded me of all the pain associated with it, especially when </div><div>dealing with values that may have come across the diff compartment / </div><div>frame / context. `instanceof` is useless when dealing with objects </div><div>from diff contexts, `typeof` is also pretty limited in a sense that it </div><div>can detect weather value is array, error, map, set, etc.. not to </div><div>mention it's awkwardnesses…</div><div><br></div><div>Only solution that seems to work toady that is adopted by most popular </div><div>JS libraries is:</div><div><br></div><div>function type(value) {</div><div>  return Object.prototype.toString.call(value).split(' </div><div>')[1].split(']')[0].toLowerCase()</div><div>}</div><div><br></div><div>I don't actually know if that's supposed to work according to spec or </div><div>if it's just an implementation coincidence that happen to</div><div>work. Either way I would really welcome some standard </div><div>solution preferably  via function form (so that can be polyfilled today)</div><div>to do type detection for all the built-ins and host objects.</div><div><br></div><div>Aside main issue, it would be great if solution was compatible with </div><div>mozilla's xpcom components too where one object my be</div><div>queried with multiple interfaces and there for have multiple types. </div><div>Also, above hack does not works with XPCOMs as </div><div> Object.prototype.toString returns "[object </div><div>XPCWrappedNative_NoHelper]", while actual toString returns something </div><div>little more useful "[xpconnect wrapped (nsISupports, nsIURI, nsIURL)]"</div><div><br></div><div>Regards</div><div>--</div><div>Irakli Gozalishvili</div><div>Web: <a href="http://www.jeditoolkit.com">http://www.jeditoolkit.com</a>/</div><div><br></div><div>_______________________________________________</div><div>es-discuss mailing list</div><div><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a></div><div><a href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a></div></div></blockquote></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>