首頁  >  文章  >  web前端  >  如何在 JavaScript 中取得呼叫函數的行號和來源 URL?

如何在 JavaScript 中取得呼叫函數的行號和來源 URL?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-20 21:52:02645瀏覽

How to Get Line Number and Source URL of Caller Function in JavaScript?

取得JavaScript 中呼叫函數的行號和來源URL

決定呼叫JavaScript 方法的行號和來源URL 可以對於除錯目的和來源追蹤執行流程很有價值。雖然沒有直接的內建方法,但我們可以利用 Error 物件的 stack 屬性來檢索此資訊。

取得呼叫函數行號

取得呼叫者函數被呼叫的行號,我們可以解析Error 物件的stack 屬性:

<code class="js">function getErrorObject() {
  try {
    throw Error('');
  } catch (err) {
    return err;
  }
}

var err = getErrorObject();
var caller_line = err.stack.split("\n")[4];
var index = caller_line.indexOf("at ");
var clean = caller_line.slice(index + 2, caller_line.length);
console.log(clean);</code>

在這個例子中,我們拋出一個錯誤來檢索包含呼叫堆疊的Error 物件。然後,我們按換行符分割堆疊並選擇第四行(索引 3),該行通常包含呼叫者函數資訊。我們修剪前導的“at”字串以提取行號。

取得呼叫函數來源 URL

不幸的是,沒有直接的方法來取得呼叫函數的來源 URL來自函數本身的呼叫者函數。但是,我們可以使用涉及控制台日誌記錄的解決方法:

<code class="js">function logCallerInfo() {
  console.log("%c", "color: white; background: #000; padding:2px; line-height: 1.5em;",
    err.stack.split("\n")[4]);
}

logCallerInfo();</code>

在此範例中,我們使用控制台日誌記錄以自訂樣式顯示呼叫方函數資訊。堆疊的第四行(索引 3)應包含呼叫方函數的來源 URL。檢查控制台輸出將揭示所需的資訊。

雖然這些方法提供了一種近似呼叫者函數行號和來源 URL 的方法,但需要注意的是,它們可能並不在所有情況下都完全可靠。

以上是如何在 JavaScript 中取得呼叫函數的行號和來源 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn