2013-07-18 28 views
1

有什麼辦法讓Chrome DevTools不能通過引用記錄對象?問題的下面是一個例子:防止Chrome DevTools通過引用記錄對象

var monkey = { 'bananas': 0 }; 
console.log("Monkey Log #1: %O", monkey); 
monkey.bananas++; 
console.log("Monkey Log #2: %O", monkey); 
monkey.bananas++; 
console.log("Monkey Log #3: %O", monkey); 

如果你看一下工具日誌的開發,你會看到每個日誌項的值是相同的 - 他們都有3根香蕉,而不是預期的0/1/2香蕉。

+0

登錄對象 – SLaks

+0

的深層副本我想你可能是對某事。 :)我會充實的答案.. – Anthony

回答

2

只需登錄它直接,無需使用%O

var monkey = { 'bananas': 0 }; 
console.log("Monkey Log #1: ", monkey); 
monkey.bananas++; 
console.log("Monkey Log #2: ", monkey); 
monkey.bananas++; 
console.log("Monkey Log #3: ", monkey); 

日誌爲:

loggy

+0

Aaah,我不知道你可以做額外的參數,而不需要通過%o /%i /%s標籤來引用它們。甚至比我的回答更好 - 謝謝! – Anthony

0

你可能只需要做一個JSON.stringify(object),並將它看作一個字符串即可。其他變量,如整數,你需要做一個.toString()。

0

SLaks引發了正確答案:

創建複製的對象的包裝功能。

function uniqueObj(obj) { 
    return jQuery.extend(true, {}, obj); 
} 

var monkey = { 'bananas': 0 }; 
console.log("Monkey Log #1: %O", uniqueObj(monkey)); 
monkey.bananas++; 
console.log("Monkey Log #2: %O", uniqueObj(monkey)); 
monkey.bananas++; 
console.log("Monkey Log #3: %O", uniqueObj(monkey));