声明之前在Google Chrome控制台中记录的Javascript对象属性

时间:2013-08-07 08:33:35

标签: javascript google-chrome

我一直在使用Google Chrome version 28.0.1500.95 m控制台测试一些JavaScript,我正在寻找更多了解它是如何工作的:看看下面的代码:

var obj = {
    a: 99,
    f: function() { }
}

console.log(obj.a)
console.log(obj.z)    
console.log(obj)

o.z = 100;

Demo

这会输出以下结果:

99 
undefined 
Object {a: 99, f: function}
a: 99
f: function () { }
z: 100
__proto__: Object

我的问题是,为什么z在日志之后才会在结果中显示?

我假设这是控制台如何工作的东西,而不是JavaScript中的一些奇怪的范围规则,我不知道?

有人能告诉我这里发生了什么吗?

1 个答案:

答案 0 :(得分:11)

控制台中的对象最初显示为Object,并在您单击箭头时展开。

展开对象时有一个i-icon,当你悬停它时,你会看到答案:

下面的

对象状态在首次展开时被捕获

扩展后您看到的是扩展时对象的状态,而不是您拨打log()

时的状态