Revision: 67300
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at September 5, 2014 19:20 by zandor
                            
                            Updated Code
<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
Function.prototype.myname = function() { return this.toString().substr( 0, this.toString().indexOf( "(" ) ).replace( "function ", "" ) ; }
Function.prototype.callername = function( _level )
{
     // level 0 is this functon
     _level = parseInt( _level, 10 );      if ( isNaN( _level ) || _level < 0 ) _level = 0 ;
     var _eval_str = "arguments.callee" ;
     for( var _l = 0 ; _l <= _level ; _l++ ) _eval_str += ".caller" ;
     
     _eval_str += ".myname();" ;
     return eval( _eval_str ) ;
}
function _child_caller()
{
    document.write( "This function is " + arguments.callee.callername(0) ) ;
    document.write( "<br>" );
    document.write( "Parent function is " + arguments.callee.callername(1) ) ;
    document.write( "<br>" );
    document.write( "Grand Parent function is " + arguments.callee.callername(2) ) ;
}
function _parent_caller()
{
    _child_caller() ;
}
function _grand_parent_caller()
{
    _parent_caller() ;
}
_grand_parent_caller();
</SCRIPT>
                                
                            Revision: 67299
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at September 5, 2014 19:18 by zandor
                            
                            Initial Code
<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
Function.prototype.myname = function() { return this.toString().substr( 0, this.toString().indexOf( "(" ) ).replace( "function ", "" ) ; }
Function.prototype.callername = function( _level )
{
     // level 0 is this functon
     _level = parseInt( _level, 10 );      if ( isNaN( _level ) || _level < 0 ) _level = 0 ;
     var _eval_str = "arguments.callee" ;
     for( var _l = 0 ; _l <= _level ; _l++ ) _eval_str += ".caller" ;
     
     _eval_str += ".myname();" ;
     console.log( _eval_str );
     return eval( _eval_str ) ;
}
function _child_caller()
{
    document.write( "This function is " + arguments.callee.callername(0) ) ;
    document.write( "<br>" );
    document.write( "Parent function is " + arguments.callee.callername(1) ) ;
    document.write( "<br>" );
    document.write( "Grand Parent function is " + arguments.callee.callername(2) ) ;
}
function _parent_caller()
{
    _child_caller() ;
}
function _grand_parent_caller()
{
    _parent_caller() ;
}
_grand_parent_caller();
</SCRIPT>
                                Initial URL
Initial Description
This snippet allows to know the parent function caller name of any level from the calling function.
Initial Title
Recursive parental function callers
Initial Tags
javascript, function
Initial Language
JavaScript