小编给大家分享一下TypeScript中如何调用栈,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
本文介绍了TypeScript之调用栈,分享给大家,具体如下:
classCallStackTool{
privatestaticindex:number=0;
publicstaticprintCallStack(count:number,simple:boolean=true):void{
letcaller:Function=arguments.callee.caller;
leti: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-----------------------**`);
}
privatestaticgetFunctionName(func:any,simple:boolean):string{
if(simple){
letname:any;
if(typeoffunc=='function'){
name=(''+func).match(/function\s*\((\s*\$*\S+\s*,)*(\s*\$*\S+\s*)?\)/g);
let$result:string=name&&name[0];
if($result!=`function()`){
return$result;
}
}
}
returnfunc.toString();
}
}
测试代码:
classTest2CallStack{
publicadd(i:number,b:number):number{
CallStackTool.printCallStack(2,true);
returni+b;
}
publica(c:number,q:number):number{
returnthis.add(c,q);
}
publicprint():void{
console.log(`${this.a(1,1)}`);
}
}
开始测试:
结果:
所以,尽量给function的参数取一些好的名字.
另外一点 , 不会出现function()这样的打印 , 出现没有参数的function , 我会将方法体内容也打印出来
如果需要把每一个function的方法体的内容打印出来CallStackTool.printCallStack(2,false), 将第二个参数设置未false
以上是“TypeScript中如何调用栈”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!