TypeScript之调用栈的实现


Posted in Javascript onDecember 31, 2019

本文介绍了TypeScript之调用栈,分享给大家,具体如下:

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)}`);
  }
}

开始测试:

TypeScript之调用栈的实现

结果:

TypeScript之调用栈的实现

所以,尽量给function的参数取一些好的名字.

另外一点 , 不会出现function()这样的打印 , 出现没有参数的function , 我会将方法体内容也打印出来

如果需要把每一个function的方法体的内容打印出来CallStackTool.printCallStack(2,false), 将第二个参数设置未false

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
javascript中sort排序实例详解
Jul 24 Javascript
vue 路由页面之间实现用手指进行滑动的方法
Feb 23 Javascript
vue 指定组件缓存实例详解
Apr 01 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 Javascript
electron+vue实现div contenteditable截图功能
Jan 07 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
JavaScript流程控制(循环)
Dec 06 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 #Javascript
Vue实现剪贴板复制功能
Dec 31 #Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 #Javascript
小程序外卖订单界面的示例代码
Dec 30 #Javascript
记录微信小程序 height: calc(xx - xx);无效问题
Dec 30 #Javascript
JS三级联动代码格式实例详解
Dec 30 #Javascript
JavaScript监听触摸事件代码实例
Dec 30 #Javascript
You might like
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
webpack优化的深入理解
2018/12/10 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
Python数学形态学实例分析
2019/09/06 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis