欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TypeScript之調(diào)用棧的實現(xiàn)

 更新時間:2019年12月31日 09:17:26   作者:Aonaufly  
這篇文章主要介紹了TypeScript之調(diào)用棧的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文介紹了TypeScript之調(diào)用棧,分享給大家,具體如下:

class CallStackTool{
  private static index:number = 0;
  public static printCallStack (count:number , simple: boolean = true):void {
    let caller:Function = arguments.callee.caller;
    let i:number = 0;
    count = count || 10;
    CallStackTool.index ++;
    if( CallStackTool.index > 500 ) CallStackTool.index = 1;
    console.log(`***-----------------${CallStackTool.index}Start----------------------- **`);
    while (caller && i < count) {
      console.log(`${(i+1)}: \n ${CallStackTool.getFunctionName(caller,simple)}`);
      caller = caller.caller;
      i++;
    }
    console.log(`***-----------------${CallStackTool.index}End----------------------- **`);
  }

  private static getFunctionName(func:any,simple: boolean):string {
    if( simple ){
      let name:any;
      if ( typeof func == 'function' ) {
        name = ('' + func).match(/function\s*\((\s*\$*\S+\s*,)*(\s*\$*\S+\s*)?\)/g);
        let $result: string = name && name[0];
        if( $result != `function ()` ){
          return $result;
        }
      }
    }
    return func.toString();
  }
}

測試代碼:

class Test2CallStack{

  public add( i:number, b:number ):number{
    CallStackTool.printCallStack(2,true);
    return i +b;
  }

  public a( c:number, q:number ): number{
    return this.add(c,q);
  }

  public print() : void{
    console.log(`${this.a(1,1)}`);
  }
}

開始測試:

結果:

所以,盡量給function的參數(shù)取一些好的名字.

另外一點 , 不會出現(xiàn)function()這樣的打印 , 出現(xiàn)沒有參數(shù)的function , 我會將方法體內(nèi)容也打印出來

如果需要把每一個function的方法體的內(nèi)容打印出來CallStackTool.printCallStack(2,false), 將第二個參數(shù)設置未false

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論