[Javascript] 我如何在Safari中更改console.log的默認行為?


Answers

我通常做的事情是,如果我想在它記錄的時候看到它的狀態,我只是將它轉換為JSON字符串。

console.log(JSON.stringify(a));
Question

在沒有附加組件的Safari中, console.log將顯示處於最後執行狀態的對象,而不是在調用console.log時的狀態。

我必須通過console.log來克隆對象才能獲得該行對象的狀態。

例:

var test = {a: true}
console.log(test); // {a: false}
test.a = false; 
console.log(test); // {a: false}



> Object控制台中的> Object ,不僅顯示當前狀態。 它實際上是推遲閱讀對象,它的屬性,直到你展開它。

例如,

var test = {a: true}
console.log(test);
setTimeout(function () {
    test.a = false; 
    console.log(test);
}, 4000);

然後展開第一個調用,這將是正確的,如果在第二個console.log返回之前執行它




有一個選項可以使用調試器庫。

https://debugjs.net/

只需將腳本包含到您的網頁中並放置日誌語句即可。

<script src="debug.js"></script>

記錄

var test = {a: true}
log(test); // {a: true}
test.a = false; 
log(test); // {a: false}



我定義了一個工具:

function MyLog(text) {
    console.log(JSON.stringify(text));
}

當我想要登錄控制台時,我只需要:

MyLog("hello console!");

它工作得很好!




在將請求提交到目標頁面之前,打開控制台或打開控制台後,只需刷新頁面....