以前javascript對於IO的支援很弱,不能寫入相應的文字檔中,而且異常對象Error也不統一,無法列印詳細的堆棧。自訂異常對象是個非常不討好的方法,因為通常我們只看到其message屬性,再者,其他自訂屬性需要用最慢的for...in迴圈遍曆出來。這時沒有辦法了,我們只有求助於瀏覽器的各種私人實現,如firefox就有console.log。下面是console對象的方法列表,關於firebug更詳細的使用可見這篇文章。
函數 |
說明 |
log(obj[, obj, ...]) |
向控制台輸出一個資訊。可以輸入多個參數,輸出將已空格分隔各參數輸出。 第一參數可以包含格式化文本,例如: log(‘這裡有%d個%s',count,apple); 字串格式: %s:字串。 %d, %i:數字。 %f: 浮點數。 %o -超連結對象。 |
debug(obj[, obj, ...]) |
向控制台輸出一個資訊,資訊包含一個超連結連結到輸出位置。 |
info(obj[, obj, ...]) |
向控制台輸出一個帶資訊表徵圖和背景顏色的資訊,資訊包含一個超連結連結到輸出位置。 |
warn(obj[, obj, ...]) |
向控制台輸出一個帶警告圖示和背景顏色的資訊,資訊包含一個超連結連結到輸出位置。 |
error(obj[, obj, ...]) |
向控制台輸出一個帶錯誤表徵圖和背景顏色的資訊,資訊包含一個超連結連結到輸出位置。 |
assert(expression[, obj, ...]) |
測試一個表示是否為true,如果為false,提交一個例外資訊到控制台。 |
dir(obj) |
列出對象的所有屬性。 |
dirxml(node) |
列出HTML或XML Element的XML源樹。 |
trace() |
輸出堆棧的調用入口。 |
group(obj[, obj, ...]) |
將資訊分組再輸出到控制台。通過groupEnd()結束分組。 |
groupEnd() |
結束分組輸出。 |
time(name) |
建立一個名稱為name的計時器,計算代碼的執行時間,調用timeEnd(name)停止計時器並輸出執行時間。 |
timeEnd(name) |
停止名稱為name的計時器並輸出執行時間。 |
profile([title]) |
開始對指令碼進行效能測試,title為測試標題。 |
profileEnd() |
結束效能測試。 |
count([title]) |
計算代碼的執行次數。titile作為輸出標題。 |
firebug就自不多說了,IE8也有console.log,不過這需要按下F12,進入偵錯模式時才有效,不然報錯。為了不報錯,平時我們應該實現一個Null 物件來覆蓋它。 複製代碼 代碼如下:if (!window.console ){
window.console = {};
var methods = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"],
noop = function(){}
for (var i = 0,method;method=methods[i++];)
window.console[method] = noop;
}
大概opera9.5x之後吧,多了一個叫Dragonfly的東東。顯然,它無法與firebug花樣繁多的日誌輸出相比,它只提供了一個opera.postError方法。 複製代碼 代碼如下:if (window.opera && opera.postError) {
opera.postError(message);
}
safari也有console.log,它是基於其Web Inspector組件,感覺與firefox差不多,但我不是水果黨,不知道其方法有沒有firebug那麼多……對於瀏覽器新貴chrome,現在我們可以在其擴充程式搜尋安裝firebug的chrome版本。