function( obj, objType, stack ) {
				stack = stack || [];
				var res, parser, parserType,
					inStack = inArray( obj, stack );

				if ( inStack !== -1 ) {
					return "recursion(" + ( inStack - stack.length ) + ")";
				}

				objType = objType || this.typeOf( obj  );
				parser = this.parsers[ objType ];
				parserType = typeof parser;

				if ( parserType === "function" ) {
					stack.push( obj );
					res = parser.call( this, obj, stack );
					stack.pop();
					return res;
				}
				return ( parserType === "string" ) ? parser : this.parsers.error;
			}
function( obj, objType, stack ) {
				stack = stack || [];
				var res, parser, parserType,
					inStack = inArray( obj, stack );

				if ( inStack !== -1 ) {
					return "recursion(" + ( inStack - stack.length ) + ")";
				}

				objType = objType || this.typeOf( obj  );
				parser = this.parsers[ objType ];
				parserType = typeof parser;

				if ( parserType === "function" ) {
					stack.push( obj );
					res = parser.call( this, obj, stack );
					stack.pop();
					return res;
				}
				return ( parserType === "string" ) ? parser : this.parsers.error;
			}
function ( obj , objType , stack ) { stack = stack || [ ] ; var res , parser , parserType , inStack = inArray ( obj , stack ) ; if ( inStack !== - 1 ) { return "recursion(" + ( inStack - stack . length ) + ")" ; } objType = objType || this . typeOf ( obj ) ; parser = this . parsers [ objType ] ; parserType = typeof parser ; if ( parserType === "function" ) { stack . push ( obj ) ; res = parser . call ( this , obj , stack ) ; stack . pop ( ) ; return res ; } return ( parserType === "string" ) ? parser : this . parsers . error ; }
objType is used mostly internally, you can fix a (custom) type in advance
objType is used mostly internally you can fix a ( custom ) type in advance
Returns a string that can be used to describe the object