webdebugger/build/app.js
function hasArrayNature(obj) {
	  return (
	    // not null/false
	    !!obj && (
	    // arrays are objects, NodeLists are functions in Safari
	    typeof obj == 'object' || typeof obj == 'function') &&
	    // quacks like an array
	    'length' in obj &&
	    // not window
	    !('setInterval' in obj) &&
	    // no DOM node should be considered an array-like
	    // a 'select' element has 'length' and 'item' properties on IE8
	    typeof obj.nodeType != 'number' && (
	    // a real array
	    Array.isArray(obj) ||
	    // arguments
	    'callee' in obj ||
	    // HTMLCollection/NodeList
	    'item' in obj)
	  );
	}
function hasArrayNature(obj) {
	  return (
	    // not null/false
	    !!obj && (
	    // arrays are objects, NodeLists are functions in Safari
	    typeof obj == 'object' || typeof obj == 'function') &&
	    // quacks like an array
	    'length' in obj &&
	    // not window
	    !('setInterval' in obj) &&
	    // no DOM node should be considered an array-like
	    // a 'select' element has 'length' and 'item' properties on IE8
	    typeof obj.nodeType != 'number' && (
	    // a real array
	    Array.isArray(obj) ||
	    // arguments
	    'callee' in obj ||
	    // HTMLCollection/NodeList
	    'item' in obj)
	  );
	}
function hasArrayNature ( obj ) { return ( // not null/false ! ! obj && ( // arrays are objects, NodeLists are functions in Safari typeof obj == 'object' || typeof obj == 'function' ) && // quacks like an array 'length' in obj && // not window ! ( 'setInterval' in obj ) && // no DOM node should be considered an array-like // a 'select' element has 'length' and 'item' properties on IE8 typeof obj . nodeType != 'number' && ( // a real array Array . isArray ( obj ) || // arguments 'callee' in obj || // HTMLCollection/NodeList 'item' in obj ) ) ; }
Perform a heuristic test to determine if an object is "array-like".

A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"
Joshu replied: "Mu."

This function determines if its argument has "array nature": it returns
true if the argument is an actual array, an `arguments' object, or an
HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).

It will return false for other array-like objects like Filelist.

@param {*} obj
@return {boolean}
Perform a heuristic test to determine if an object is array - like .