TypeScript之調(diào)用棧的實(shí)現(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)}`);
}
}
開始測試:

結(jié)果:

所以,盡量給function的參數(shù)取一些好的名字.
另外一點(diǎn) , 不會出現(xiàn)function()這樣的打印 , 出現(xiàn)沒有參數(shù)的function , 我會將方法體內(nèi)容也打印出來
如果需要把每一個(gè)function的方法體的內(nèi)容打印出來CallStackTool.printCallStack(2,false), 將第二個(gè)參數(shù)設(shè)置未false
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- TypeScript棧的壓入與彈出序列校驗(yàn)
- 前端算法之TypeScript包含min函數(shù)的棧實(shí)例詳解
- TypeScript數(shù)組實(shí)現(xiàn)棧與對象實(shí)現(xiàn)棧的區(qū)別詳解
- Typescript是必須要學(xué)習(xí)嗎?如何學(xué)習(xí)TS全棧開發(fā)
- 數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊(duì)列詳解
- TypeScript數(shù)據(jù)結(jié)構(gòu)棧結(jié)構(gòu)Stack教程示例
- Typescript實(shí)現(xiàn)棧的方法示例
相關(guān)文章
微信小程序中button去除默認(rèn)的邊框?qū)嵗a
這篇文章主要介紹了微信小程序中button去除默認(rèn)的邊框的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08
ECMAScript5中的對象存取器屬性:getter和setter介紹
這篇文章主要介紹了ECMAScript5中的對象屬性存取器:getter和setter介紹,事實(shí)上在除ie外最新主流瀏覽器的實(shí)現(xiàn)中,任何一個(gè)對象的鍵值都可以被getter和setter方法所取代,這被稱之為“存取器屬性”,需要的朋友可以參考下2014-12-12
JavaScript中setInterval()用法舉例詳解
這篇文章主要給大家介紹了關(guān)于JavaScript中setInterval()用法的相關(guān)資料,setInterval()方法可按照指定的周期(以毫秒計(jì))來調(diào)用函數(shù)或計(jì)算表達(dá)式,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
Base64(二進(jìn)制)圖片編碼解析及在各種瀏覽器的兼容性處理
這篇文章主要介紹了Base64(二進(jìn)制)圖片編碼解析及在各種瀏覽器的兼容性處理,需要的朋友可以參考下2017-02-02
微信小程序?qū)崿F(xiàn)事件傳參與數(shù)據(jù)同步流程詳解
這篇文章主要介紹了微信小程序開發(fā)中實(shí)現(xiàn)事件傳參與數(shù)據(jù)同步的詳細(xì)流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10
微信小程序?qū)崿F(xiàn)抖音播放效果的實(shí)例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)抖音播放效果的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
javascript 獲取網(wǎng)頁參數(shù)系統(tǒng)
用處比較多,適合在當(dāng)前網(wǎng)頁打開別的網(wǎng)站的內(nèi)容2008-07-07
JavaScript實(shí)現(xiàn)京東購物放大鏡和選項(xiàng)卡效果的方法分析
這篇文章主要介紹了JavaScript實(shí)現(xiàn)京東購物放大鏡和選項(xiàng)卡效果的方法,結(jié)合實(shí)例形式分析了javascript基于事件響應(yīng)、數(shù)值計(jì)算與頁面元素動(dòng)態(tài)修改實(shí)現(xiàn)圖片放大功能以及tab選項(xiàng)卡切換效果相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
原生js實(shí)現(xiàn)each方法實(shí)例代碼詳解
這篇文章主要介紹了原生js實(shí)現(xiàn)each方法,需要的朋友可以參考下2019-05-05

