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 相关文章推荐
Javascript 复制数组实现代码
Nov 26 Javascript
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
Javascript setInterval的两种调用方法(实例讲解)
Nov 29 Javascript
JQuery以JSON方式提交数据到服务端示例代码
May 05 Javascript
JQuery对表单元素的基本操作使用总结
Jul 18 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
JavaScript中pop()方法的使用教程
Jun 09 Javascript
微信小程序 icon组件详细及实例代码
Oct 25 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
js实现图片粘贴到网页
Dec 06 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
使用Python 统计高频字数的方法
2019/01/31 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Python持续监听文件变化代码实例
2020/07/22 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
高中的自我鉴定
2013/12/16 职场文书
酒鬼酒广告词
2014/03/21 职场文书
程序员求职信
2014/04/16 职场文书
股东合作协议书
2014/09/12 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
施工员岗位职责范本
2015/04/11 职场文书
英语投诉信范文
2015/07/03 职场文书
小学班长竞选稿
2015/11/20 职场文书
八年级作文之感恩
2019/11/22 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
Python必备技巧之函数的使用详解
2022/04/04 Python