2012-07-09 33 views
3

學習JS是一條崎嶇不平的道路...我想了解我的代碼中發生了什麼, 因此console.log();似乎是我的朋友。在函數堆棧中的JavaScript內部記錄函數/對象名稱的函數棧

有時我甚至不知道錯誤來自哪裏(或者我可能只是 太愚蠢)所以我想更好地記錄我的應用程序堆棧。我試圖找到一個答案這個 簡單又複雜的問題

如何做到這一點?除了與console.log()

例如獲得名稱的函數(構造)的其中console.log被稱爲證明是有問題:

function SomeFunction(argument1,argument2) { 
    console.log(this+'> 01 message'); 
    console.log(this.name+'> 02 message'); 
    console.log(this.constructor+'> 03 message'); 
    console.log(this.constructor.name+'> 04 message'); 
    console.log(this.prototype+'> 05 message'); 
    console.log(this.constructor.method+'> 06 message'); 
} 

SomeFunction.prototype.sayHello = function(} { 
    console.log(this+'> 01 says Hello'); 
    console.log(this.name+'> 02 says Hello'); 
    console.log(this.constructor+'> 03 says Hello'); 
    // and so on... // 
} 

大二哪一個是正確的? SomeFunction.constructor.name正在工作, 但這種語法每次都很長,所以像

var fn = this.constructor.name是有道理的,但那樣做效率不高。

有人可以指向我的良好做法方向,我如何從我的代碼擠壓 正確的日誌信息?

FYI:我搜索了幾本關於這個簡單的主題的書籍,並且 都沒有提到它。

+2

在開發人員工具中使用斷點代替 – Joseph 2012-07-09 19:42:01

+0

抱歉,但這不是我尋找的答案 – Inoperable 2012-07-09 19:45:02

+0

我認爲你留下了語言和API提供的語法(但繁瑣)你..你可以像你提到的那樣將它投擲到別的東西上......(fn)但是爲什麼?這些額外的幾個字符不會破壞銀行的文件大小(如果他們這樣做,然後做你最初的建議) – rlemon 2012-07-09 19:47:51

回答

0

使用開發人員工具(F12,control-I)或get firebug並享受單步執行代碼,檢查和更改變量,編輯css。它會極大地提高你的javascript學習體驗...

+1

節點在服務器上,沒有瀏覽器。 – Inoperable 2012-07-09 19:55:22