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