成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Get stack trace in JavaScript (v8 only)

張漢慶 / 3460人閱讀

摘要:原理就是利用以及特有的使用這種方法可以獲取到相當(dāng)多的信息比如函數(shù)所在的文件的文件名行號列號等等不過缺點(diǎn)是只有支持其他瀏覽器可以利用來追溯調(diào)用棧直接上代碼使用

原理就是利用Error, 以及v8特有的API: JavaScript stack trace API.
使用這種方法可以獲取到相當(dāng)多的信息,
比如函數(shù)所在的文件的文件名, 行號列號等等...
不過缺點(diǎn)是只有v8支持.
其他瀏覽器可以利用arguments.caller來追溯調(diào)用棧.

直接上代碼:

// hook the prepare function
Error.prepareStackTrace=function(err,stack){
  // err: the Error object.
  // stack: stack info, an array of `CallSite`.
  // return full info of the stack.
  return stack;
};

// trace function
function trace(){
  var obj={};
  Error.captureStackTrace(obj);
  // or just use: var obj=new Error();
  var stack=obj.stack;
  // remove this function from stack
  stack=stack.slice(1);
  return stack;
}

使用:

(function callee(){
  console.assert(trace()[0].getFunction()===callee);
})();

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85344.html

相關(guān)文章

  • V8 的 Error 對象與棧追蹤的妙用

    摘要:現(xiàn)狀最近在寫歡迎的時(shí)候,一直為錯(cuò)誤的棧追蹤而愁。由于送入隊(duì)列的是函數(shù),因此在的參數(shù)可以放心地使用。其次,這些函數(shù)并不是立即在中調(diào)用的,而是由專門的隊(duì)列處理代碼來調(diào)用。 本文的講述都是以 Node.js 環(huán)境為例子,而 Node.js 使用的 JavaScript 引擎是 V8,因此理論上 Chrome 也能適用,其它瀏覽器我就不清楚了。 現(xiàn)狀 最近在寫 Rize(歡迎 star) 的時(shí)...

    Luosunce 評論0 收藏0
  • 關(guān)于Error.captureStackTrace

    摘要:在一些程序中,有時(shí)會看到這一語句,用于處理堆棧信息。為了不向使用者暴露自定義類的內(nèi)部細(xì)節(jié),在自定義類內(nèi)部使用時(shí),往往會傳入?yún)?shù),其值即為自定義類的構(gòu)造函數(shù)。 在一些Node.js程序中,有時(shí)會看到Error.captureStackTrace()這一語句,用于處理堆棧信息。該語句的標(biāo)準(zhǔn)定義是什么?如何使用?本文將就這些問題做一些探討。 標(biāo)準(zhǔn)定義 從字面上來看,captureStackT...

    weakish 評論0 收藏0
  • 全面掌握Node命令選項(xiàng)

    摘要:譯者按作為開發(fā)者,有必要全面了解一下命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。命令有很多選項(xiàng),可以用于調(diào)試代碼。這篇博客全面介紹了命令,可以提高大家的工作效率。訪問官方文檔,可以查看命令的所有選項(xiàng)。 譯者按: 作為Node.js開發(fā)者,有必要全面了解一下Node命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。 原文: Mastering the Node.js CLI & Comma...

    raise_yang 評論0 收藏0
  • 全面掌握Node命令選項(xiàng)

    摘要:譯者按作為開發(fā)者,有必要全面了解一下命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。命令有很多選項(xiàng),可以用于調(diào)試代碼。這篇博客全面介紹了命令,可以提高大家的工作效率。訪問官方文檔,可以查看命令的所有選項(xiàng)。 譯者按: 作為Node.js開發(fā)者,有必要全面了解一下Node命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。 原文: Mastering the Node.js CLI & Comma...

    guqiu 評論0 收藏0
  • [譯] JavaScript 性能優(yōu)化殺手

    摘要:原文引言這篇文檔包含了如何避免使代碼性能遠(yuǎn)低于預(yù)期的建議尤其是一些會導(dǎo)致牽涉到等無法優(yōu)化相關(guān)函數(shù)的問題一些背景在中并沒有解釋器但卻有兩個(gè)不同的編譯器通用編譯器和優(yōu)化編譯器這意味著你的代碼總是會被編譯為機(jī)器碼后直接運(yùn)行這樣一定很快咯并不是 原文:http://dev.zm1v1.com/2015/08/19/javascript-optimization-killers/引言 這篇文檔包...

    MockingBird 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<