这是javascript代码。
var option={
value:'',
desc:{
en:'',
hn:''
}
};
option.value='15';
option.desc.en='hello';
option.desc.hn='world';
console.log(option);
option.value='25';
option.desc.hn='India';
console.log(option);
这给出了输出 -
object {value:25,object {desc:{en:"hello",hn:"India"}}}
object {value:25,object {desc:{en:"hello",hn:"India"}}}
而不是
object {value:15,object {desc:{en:"hello",hn:"world"}}}
object {value:25,object {desc:{en:"hello",hn:"India"}}}
答案 0 :(得分:0)
不同浏览器的输出差异。我拿到 object {value:15,object {desc:{en:" hello",hn:" world"}}} object {value:25,object {desc:{en:" hello",hn:" India"}}} 通过铬。
答案 1 :(得分:0)
就像@Chales Tuang提到的那样,我得到了预期的输出
var option={
value:'',
desc:{
en:'',
hn:''
}
};
option.value='15';
option.desc.en='hello';
option.desc.hn='world';
console.log(option);
option.value='25';
option.desc.hn='India';
console.log(option);
对于每次调用console.log时获得相同输出的情况,我可能想到的唯一解释是,浏览器正在应用Javascript中对象存在的原则,如Stoyan Stefanov在他的书中所示Object Oriented Javascript
因此,当您调用console.log时,它会看到对象的最新,最新属性,即使该对象在调用后被扩充,因为更新是在调用范围内,它只是抓取对象的当前更新状态。
无论如何,这是我对此的想法。
答案 2 :(得分:0)
这是因为WebKit浏览器(https://code.google.com/p/chromium/issues/detail?id=44720)
中存在错误不是记录整个对象,而是尝试记录特定值,您将获得预期的结果..
console.log(option.desc.hn);
或尝试JSON.stringify
console.log(JSON.stringify(option));
JS小提琴链接:https://jsfiddle.net/t744ohog/2/