/** * PHP-like print_r() equivalent for JavaScript Object * * @author Faisalman * @license http://www.opensource.org/licenses/mit-license.php * @link http://gist.github.com/879208 */ var print_r = function (obj, t) { // define tab spacing var tab = t || ''; // check if it's array var isArr = Object.prototype.toString.call(obj) === '[object Array]'; // use {} for object, [] for array var str = isArr ? ('Array\n' + tab + '[\n') : ('Object\n' + tab + '{\n'); // walk through it's properties for (var prop in obj) { if (obj.hasOwnProperty(prop)) { var val1 = obj[prop]; var val2 = ''; var type = Object.prototype.toString.call(val1); switch (type) { // recursive if object/array case '[object Array]': case '[object Object]': val2 = print_r(val1, (tab + '\t')); break; case '[object String]': val2 = '\'' + val1 + '\''; break; default: val2 = val1; } str += tab + '\t' + prop + ' => ' + val2 + ',\n'; } } // remove extra comma for last property str = str.substring(0, str.length - 2) + '\n' + tab; return isArr ? (str + ']') : (str + '}'); };