Javascript 在 console.log 之前更改对象中的键

标签 javascript object

这段代码的结果中出现了一些让我无法解释的东西

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:"a"

现在恢复脚本执行。之后在控制台上写入 ctrl2.myvar ,然后您将看到带有 a 和 b 的更新选项。

关于Javascript 在 console.log 之前更改对象中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29699113/

相关文章:

javascript - 在 JavaScript 中检索 Python 变量

javascript - .find() 不是 mongoose + nodejs 中的函数

c++ - 不存在从 "test *"转换为 "test"的合适构造函数,构造函数,

javascript - 尽管有模 if 语句,For 循环仍推送到数组两次

java - Java中的空数组对象创建

javascript - 使用另一个属性值更改数组中对象的属性值

javascript - highcharts,可能的错误设置工具提示格式化程序和 html?

javascript - 可以通过 Javascript 控制 SWF 吗?

javascript - 很棒的 CSS 效果

java - 如何仅检查 Arraylist.Contains(Object) 方法的少数属性应返回 true?