这段代码的结果中出现了一些让我无法解释的东西
var ctrl1 = {
func1: function(objct){
objct.options.b = "b";
}
}
var ctrl2 = {
myvar : {options:{a:"a"}},
func2: function(){
console.log(ctrl2.myvar);
ctrl1.func1(ctrl2.myvar);
},
}
ctrl2.func2();
我得到了结果
Object {a:"a", b:"b"}
正常情况下应该显示
Object {a:"a"}
最佳答案
您的编码工作正常。这是在控制台中打印之前更新的选项。
尝试按照以下步骤打开控制台并粘贴以下代码。
var ctrl1 = {
func1: function(objct){
objct.options.b = "b";
}
}
var ctrl2 = {
myvar : {options:{a:"a"}},
func2: function(){
console.log(ctrl2.myvar);
debugger;
ctrl1.func1(ctrl2.myvar);
},
}
ctrl2.func2();
一旦代码在调试器处停止,您将在控制台中看到所需的结果,即 a:"a"
现在恢复脚本执行。之后在控制台上写入 ctrl2.myvar
,然后您将看到带有 a 和 b 的更新选项。
关于Javascript 在 console.log 之前更改对象中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29699113/