As summary return !!obj && typeof obj.toString === "undefined" && /^\s*\bfunction\b/.test(obj);
with a given IE function, it should not fail. Other browsers can use the good old "[object Function]" trick. On Mon, Aug 3, 2009 at 11:38 AM, Andrea Giammarchi < andrea.giammar...@gmail.com> wrote: > I solved it already, have you tried my snippet to understand native IE > functions? > > Native IE functions have these "features" > - they are not instanteof Function > - they are not instanceof Object > - accordingly, they have not a toString method, decompilation is in this > case safe enough > - you cannot call them via Function callbacks ( function expected, lol ) > > Regards > > > On Mon, Aug 3, 2009 at 10:57 AM, DBJDBJ <dbj...@gmail.com> wrote: > >> >> >> There are two "main points" here: terminology and reliability. >> http://dbj.org/dbj/?p=270 >> (sorry for a blog plug ) >> >> typeof( window.alert ) === 'object' is going head-on towards browser >> (+OS) differences so, same as ECMA comitee, I have no resources to >> "solve" that one ... >> >> --DBJ >> >> On Aug 1, 3:16 pm, Andrea Giammarchi <andrea.giammar...@gmail.com> >> wrote: >> > come on it was quoted as a metaphor ... what you have done makes sense >> but >> > if the point is reliability it does not in any case with IE so let's >> speed >> > up a common function, no? >> > >> > On Sat, Aug 1, 2009 at 2:17 PM, DBJDBJ <dbj...@gmail.com> wrote: >> > >> > > "... DBJ 'mess' ... " ? >> > >> > > One espresso to many , Andrea :-) ? >> > >> > > PS: I think that top.alert() is "object" in IE because they can't >> > > think of DOM as a exclusive domain of javascript. There is this thing >> > > called "vbscript" they have to make work inside IE, as well ... but .. >> > > let's not go there ;o) >> > >> > > On Jul 27, 5:43 pm, Andrea Giammarchi <andrea.giammar...@gmail.com> >> > > wrote: >> > > > Yes Daniel ... ( sorry I had another ticket open and I read Ariel >> ... ) >> > >> > > > On Mon, Jul 27, 2009 at 5:43 PM, Andrea Giammarchi < >> > >> > > > andrea.giammar...@gmail.com> wrote: >> > > > > Yes Ariel, I was talking about user defined stuff and obviously >> typeof >> > > > > "unknown" breaks the rule as well but this is not the case, is it? >> > >> > > > > If toString.call(obj) is not reliable cause it could return >> [object >> > > Object] >> > > > > DBJ "mess" is not reliable as well because passed variable could >> not >> > > produce >> > > > > what he is expecting, starting from document.getElementById which >> is >> > > object >> > > > > and not function in IE, got the point? >> > >> > > > > At least you told me why there is a call rather than an instanceof >> but >> > > what >> > > > > about this for IE DOM functions? >> > >> > > > > return !!obj && typeof obj.toString === "undefined" && >> > > > > /^\s*\bfunction\b/.test(obj); >> > >> > > > > it works fine to me in every IE (other browsers will be filtered >> by >> > > first >> > > > > feature test) >> > >> > > > > Regards >> > >> > > > > On Mon, Jul 27, 2009 at 5:29 PM, Daniel Friesen < >> > > nadir.seen.f...@gmail.com >> > > > > > wrote: >> > >> > > > >> typeof fn === 'function'; // Some things like >> > > > >> document.createElement('object'); return wonky results >> > > > >> fn instanceof Function; // Breaks across iFrames >> > > > >> toString.call(fn) === "[object Function]"; // Works the same >> across >> > > > >> iFrames and returns more reliable results >> > >> > > > >> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [ >> > >http://daniel.friesen.name] >> > >> > > > >> Andrea Giammarchi wrote: >> > > > >> > About isFunction >> > >> > > > >> > I lost the point where toString.call(obj) === "[object >> Function]" >> > > was >> > > > >> > introduced instead of obj instanceof function >> > >> > > > >> > I understand differences in IE so I wonder if two distinct >> callbacks >> > > > >> > could solve the odyssey: >> > >> > > > >> > isFunction: function( obj ) { >> > > > >> > return obj instanceof Function; >> > > > >> > }, >> > >> > > > >> > isDOMFunction: toString.call(window.alert) === "[object >> > > Function]" ? >> > > > >> > function( obj ) { >> > > > >> > return toString.call(obj) === "[object Function]"; >> > > > >> > }: >> > > > >> > // IE only and only until standard native function >> manifest >> > > > >> > function( obj ){ >> > > > >> > return !!obj && typeof obj.toString === "undefined" >> && >> > > > >> > /^\s*\bfunction\b/.test(obj); >> > > > >> > } >> > > > >> > , >> > >> > > > >> > In this way we could consider that in every browser, and when >> > > > >> > call/apply are supported, isFunction(fn) will guarantee >> call/apply >> > > > >> > while a DOMFunction could require a try catch or a different >> > > behavior >> > > > >> > for IE >> > >> > > > >> > switch(true){ >> > > > >> > case $.isFunction(fn): return fn.call(what, ever); >> > > > >> > case $.isDOMFunction(fn): what.push.call(what, >> > > toArray(fn(ever))); >> > > > >> > return what; >> > > > >> > default: throw new Error("what tf?"); >> > > > >> > } >> > >> > > > >> > ... or maybe not? >> > > > >> > Regards >> > >> > > > >> > On Sun, Jul 26, 2009 at 4:09 PM, Andrea Giammarchi >> > > > >> > <andrea.giammar...@gmail.com <mailto: >> andrea.giammar...@gmail.com>> >> > > > >> wrote: >> > >> > > > >> > I usually encapsulate toString from Object.prototype and if >> > > > >> > somebody breaks the rule it means we cannot trust anything >> > > > >> > included typeof. So, in few words, nobody has intersts into >> > > break >> > > > >> > this rule, imho. >> > >> > > > >> >> On Jul 26, 2009 8:07 AM, "DBJDBJ" <dbj...@gmail.com >> > > > >> >> <mailto:dbj...@gmail.com>> wrote: >> > >> > > > >> >> Also, IMHO this yields high level of encapsulation of an >> > > important >> > > > >> >> mechanism. >> > > > >> >> Which is a good thing. >> > > > >> >> And it is a fraction of a micro second slower then >> > >> > > > >> >> Object.prototype.toString.call(x) === "[object Object]" >> > >> > > > >> >> but it is more compact ... >> > >> > > > >> >> In any case we are entering the subjective judgement >> phase, so >> > > I >> > > > >> >> think >> > > > >> >> we should stop here and leave it to jQuery team to use >> this or >> > > > >> not... >> > >> > > > >> >> --DBJ On Jul 26, 12:09 am, Andrea Giammarchi >> > > > >> >> <andrea.giammar...@gmail.com >> > > > >> >> <mailto:andrea.giammar...@gmail.com>> wrote: >> > >> > > > >> >> > I miss the point about regexp usage ... please tell me >> the >> > > > >> >> difference (in a > real scenario) betwe... >> > >> > > > >> >> > On Sat, Jul 25, 2009 at 1:38 PM, DBJDBJ < >> dbj...@gmail.com >> > > > >> >> <mailto:dbj...@gmail.com>> wrote: > > > This indeed woks >> : >> > > > >> functi... >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---