有没有办法让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 :(得分: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);
记录为:
答案 1 :(得分:0)
您可能只需要执行JSON.stringify(对象)并将其视为字符串。其他变量,如整数,你需要做.toString()。
答案 2 :(得分: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));