摘要:原理就是利用以及特有的使用這種方法可以獲取到相當(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
摘要:現(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í)...
摘要:在一些程序中,有時(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...
摘要:譯者按作為開發(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...
摘要:譯者按作為開發(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...
摘要:原文引言這篇文檔包含了如何避免使代碼性能遠(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/引言 這篇文檔包...
閱讀 853·2021-11-16 11:56
閱讀 1677·2021-11-16 11:45
閱讀 3124·2021-10-08 10:13
閱讀 4113·2021-09-22 15:27
閱讀 734·2019-08-30 11:03
閱讀 653·2019-08-30 10:56
閱讀 957·2019-08-29 15:18
閱讀 1750·2019-08-29 14:05