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 相关文章推荐
IE8 浏览器Cookie的处理
Jan 31 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
对table和ul实现js分页示例分享
Feb 24 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
用vue和node写的简易购物车实现
Apr 25 Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
nuxt静态部署打包相对路径操作
Nov 06 Javascript
vue首次渲染全过程
Apr 21 Vue.js
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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php 获取客户端的真实ip
2009/11/30 PHP
PHP学习之整理字符串
2011/04/17 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
列表内容的选择
2006/06/30 Javascript
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
10个顶级Python实用库推荐
2021/03/04 Python
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
党校学习思想汇报
2014/01/06 职场文书
小学生开学感言
2014/02/28 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
蓝颜请假条
2014/04/11 职场文书
精神文明单位申报材料
2014/05/02 职场文书
公司门卫工作职责
2014/06/28 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
求职信如何撰写?
2019/05/22 职场文书