var test = {};
test.k1 = {};
console.log(test);
test.k1.k2 = 'apple';
console.log(test);
test.k1.k2 = 'banana';
第一个日志:
对象 k1:对象 k2:"香蕉">
为什么?我期望空对象 k1...香蕉在 3 行后定义
第二个日志:
对象 k1:对象 k2:"香蕉">
为什么?我期待k2:苹果...下一行定义香蕉
你的期望是正确的,是console.log
抛弃了你。在某些环境中,尤其是浏览器,console.log
记录的是对对象的实时引用,因此,如果您在分配 banana 的行之后展开它,您会看到 banana 而不是 apple,因为它在您展开它时向您显示它,而不是您记录它时。