So I'm used to automatically writing things such as this:
Array.prototype.slice.call(arguments);
--and similar such applications of various methods via Array.prototype.XXX.call or Object.prototype.XXX.call([]).
So I went to try out the Array.isArray method which I didn't know existed, and automatically wrote Array.prototype.isArray.call, which of course failed since isArray isn't defined on the prototype.
But then I tried Array.isArray.call([]) slightly unthinkingly and got false, which confused me.
It worked fine on the third try when I went the plain ol' boring way (the correct usage) and simply wrote Array.isArray(thing_to_be_tested), but why did I get false on the previous attempt? I don't understand why that doesn't work.
Array.isArray()(only in a[]context), and without arguments it tells you thatundefinedis not an array.isArrayis not part of the prototype chain, and it only accepts one argument, and doesn't care about thethisvalue or scope, so don't !