2012-11-04 49 views
4

我想調試一些非常簡單的Javascript使用console.log,但它的輸出值的變量,直到 console.log調用,當變量是'類'成員(Chrome 22,火狐16)。什麼時候console.log被執行?

什麼,我希望發生會是這樣一個例子:

var a = 1; 
console.log(a); 
a += 20; 

//console output says a is 1 

但是,如果變量是一個「類」成員:

var a = new myClass(1); 
console.log(a); 
a.x += 20; 

//console output says a.x is 21 

如果控制檯不記錄值因爲它在日誌被調用時存在,它什麼時候最終決定記錄該值,我該如何解決這個問題!?這裏

FWIW是代碼的全部:

function myClass() { 
    myClass.myClass.apply(this, arguments); 
    if (this.constructor === myClass) this.myClass.apply(this, arguments); 
}; 
myClass.myClass = function() {}; 
myClass.prototype.myClass = function (x_) { 
    if (x_ === undefined) x_ = 0; 
    this.x = x_; 
} 

var a = new myClass(1); 
console.log(a); 
a.x += 20; 

回答

5

隨即,但是當你在控制檯手動展開對象對象的狀態是牽強 - 不是在記錄的時間。

通過你展開它在控制檯的時候,加20的代碼已經執行很久以前(相對而言),它說x: 21

+0

這幾乎是有道理的,鉻,我不得不手動展開。對於FF,它已經擴大了,結果也一樣......我現在看到了一些相關的問題,因爲某些原因在我提出問題時沒有顯示爲建議 - 看起來答案是將對象串聯起來。我真的認爲'log'這個名字對於這個功能來說是不好的選擇,因爲日誌通常是過去事件和狀態的記錄。至少我不會浪費一個小時試圖弄清楚到底發生了什麼。儘管如此,問題解決了,謝謝! – iforce2d

+0

嘿,你是什麼意思手動擴大對象? –

相關問題