我尝试使用console.log调试一些非常简单的Javascript,但它输出的值在之后 console.log调用时才会更改。变量是' class'成员(Chrome 22,Firefox 16)。
我期望发生的一个例子是:
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
如果控制台没有记录调用日志时存在的值,它何时最终决定记录该值,以及如何解决这个问题?
这里是完整的代码:
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;
答案 0 :(得分:7)
当您在控制台中手动展开对象时,不会立即获取对象的状态。
当您在控制台中展开它时,添加20的代码已经执行了很长时间(相对而言)并且它显示x: 21