JS Stack Trace

JavaScript

var trace = (function(){
    function load() {
        var prevTrace = window.localStorage.getItem('stackTrace');
        if (!prevTrace) {
            console.log("No previous trace recorded");
            return;
        }
    }
    
    function trace() {
        var now = (new Date()).toUTCString(),
            stack = [],
            cur = trace;
        
        for (var key in cur.caller) {
            console.log(key);
            if (cur.caller.hasOwnProperty(key))
                console.log(key, cur.caller[key]);
        }
        
        while(cur = cur.caller) {
            stack.push(cur.name + '()');
        }
        stack.reverse();
        
        var stackTrace = stack.join(' > ');
        console.log(stackTrace);
    }    
    
    window.addEventListener("load", load, false);
    
    return {
        'trace': trace
    };
})();

function hi() {
    (function bad(){trace.trace();})();
}
hi();