此代码的结果中出现了我无法解释的内容

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"}


http://jsfiddle.net/akbach/6u0qnrc6/4/中测试

最佳答案

您的编码工作正常。在控制台打印之前,这些选项会更新。

尝试执行以下步骤,打开控制台,粘贴以下代码。

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的更新的选项。

09-17 16:32