src/stacktrace.js
function(curr) {
        var ANON = '{anonymous}', fnRE = /function\s*([\w\-$]+)?\s*\(/i, stack = [], fn, args, maxStackSize = 10;
        while (curr && stack.length < maxStackSize) {
            fn = fnRE.test(curr.toString()) ? RegExp.$1 || ANON : ANON;
            args = Array.prototype.slice.call(curr['arguments'] || []);
            stack[stack.length] = fn + '(' + this.stringifyArguments(args) + ')';
            curr = curr.caller;
        }
        return stack;
    }
function(curr) {
        var ANON = '{anonymous}', fnRE = /function\s*([\w\-$]+)?\s*\(/i, stack = [], fn, args, maxStackSize = 10;
        while (curr && stack.length < maxStackSize) {
            fn = fnRE.test(curr.toString()) ? RegExp.$1 || ANON : ANON;
            args = Array.prototype.slice.call(curr['arguments'] || []);
            stack[stack.length] = fn + '(' + this.stringifyArguments(args) + ')';
            curr = curr.caller;
        }
        return stack;
    }
function ( curr ) { var ANON = '{anonymous}' , fnRE = / function\s*([\w\-$]+)?\s*\( / i , stack = [ ] , fn , args , maxStackSize = 10 ; while ( curr && stack . length < maxStackSize ) { fn = fnRE . test ( curr . toString ( ) ) ? RegExp . $1 || ANON : ANON ; args = Array . prototype . slice . call ( curr [ 'arguments' ] || [ ] ) ; stack [ stack . length ] = fn + '(' + this . stringifyArguments ( args ) + ')' ; curr = curr . caller ; } return stack ; }
Safari, IE, and others
Safari IE and others