这个代码的结果中出现了一些我无法理解的东西
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"}
中进行测试
答案 0 :(得分:0)
console.log
可能会显示实时引用(无论如何都是chrome),而不是快照。如果它被折叠" (必须点击它来扩展细节),它将继续更新。
您可以通过运行代码,然后在控制台中再次修改代码并观察上一个输出来看到这一点。
答案 1 :(得分:0)
console.log()方法接收对象的引用。通过单击" +"在控制台中打开对象我们需要更长的时间,而不是需要调用func1方法。尝试替换console.log(ctrl2.myvar);使用console.log(JSON.stringify(ctrl2.myvar));
答案 2 :(得分:0)
您的编码工作正常。它是在控制台中打印之前更新的选项。
尝试以下步骤打开控制台粘贴以下代码。
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"
现在恢复脚本执行。之后在您的控制台上写ctrl2.myvar
,然后您将看到包含a和b的更新选项。