摘要:原理就是利用以及特有的使用這種方法可以獲取到相當多的信息比如函數所在的文件的文件名行號列號等等不過缺點是只有支持其他瀏覽器可以利用來追溯調用棧直接上代碼使用
原理就是利用Error, 以及v8特有的API: JavaScript stack trace API.
使用這種方法可以獲取到相當多的信息,
比如函數所在的文件的文件名, 行號列號等等...
不過缺點是只有v8支持.
其他瀏覽器可以利用arguments.caller來追溯調用棧.
直接上代碼:
// 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); })();
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85344.html
摘要:現狀最近在寫歡迎的時候,一直為錯誤的棧追蹤而愁。由于送入隊列的是函數,因此在的參數可以放心地使用。其次,這些函數并不是立即在中調用的,而是由專門的隊列處理代碼來調用。 本文的講述都是以 Node.js 環境為例子,而 Node.js 使用的 JavaScript 引擎是 V8,因此理論上 Chrome 也能適用,其它瀏覽器我就不清楚了。 現狀 最近在寫 Rize(歡迎 star) 的時...
摘要:在一些程序中,有時會看到這一語句,用于處理堆棧信息。為了不向使用者暴露自定義類的內部細節,在自定義類內部使用時,往往會傳入參數,其值即為自定義類的構造函數。 在一些Node.js程序中,有時會看到Error.captureStackTrace()這一語句,用于處理堆棧信息。該語句的標準定義是什么?如何使用?本文將就這些問題做一些探討。 標準定義 從字面上來看,captureStackT...
摘要:譯者按作為開發者,有必要全面了解一下命令的所有選項,這樣在關鍵時刻才能得心應手。命令有很多選項,可以用于調試代碼。這篇博客全面介紹了命令,可以提高大家的工作效率。訪問官方文檔,可以查看命令的所有選項。 譯者按: 作為Node.js開發者,有必要全面了解一下Node命令的所有選項,這樣在關鍵時刻才能得心應手。 原文: Mastering the Node.js CLI & Comma...
摘要:譯者按作為開發者,有必要全面了解一下命令的所有選項,這樣在關鍵時刻才能得心應手。命令有很多選項,可以用于調試代碼。這篇博客全面介紹了命令,可以提高大家的工作效率。訪問官方文檔,可以查看命令的所有選項。 譯者按: 作為Node.js開發者,有必要全面了解一下Node命令的所有選項,這樣在關鍵時刻才能得心應手。 原文: Mastering the Node.js CLI & Comma...
摘要:原文引言這篇文檔包含了如何避免使代碼性能遠低于預期的建議尤其是一些會導致牽涉到等無法優化相關函數的問題一些背景在中并沒有解釋器但卻有兩個不同的編譯器通用編譯器和優化編譯器這意味著你的代碼總是會被編譯為機器碼后直接運行這樣一定很快咯并不是 原文:http://dev.zm1v1.com/2015/08/19/javascript-optimization-killers/引言 這篇文檔包...
閱讀 841·2021-11-16 11:56
閱讀 1654·2021-11-16 11:45
閱讀 3109·2021-10-08 10:13
閱讀 4094·2021-09-22 15:27
閱讀 727·2019-08-30 11:03
閱讀 643·2019-08-30 10:56
閱讀 946·2019-08-29 15:18
閱讀 1737·2019-08-29 14:05