javascript - 使用 "this"更新对象内的值

标签 javascript object

我正在尝试更新对象本身内部的值。我有以下代码:

    var stepData = {
        0: {
            ref: "Home",
            values: {

            },
            init: function(){
                stepData[1].ref = 'new value';
                alert(stepData[1].ref);
                return;
            },
            save: function(){

            }
        },
        1: {
            ref: "one"
        }
     }

    $("#run").click(function(){
        stepData[0].init();
    });

效果很好。但是,我无法替代

stepData[1].ref = 'new value';
alert(stepData[1].ref);

this[1].ref = 'new value';
alert(this[1].ref);

为什么不呢?

编辑:抱歉,原始代码中有错误。现已修复。

最佳答案

this 主要由函数的调用方式设置,而不是由函数的定义位置设置。您的代码:

$("#run").click(function(){
    stepData[0].init();
});

...调用 init,并将 this 设置为 stepData[0]

如果您愿意,您可以this设置为stepData来调用它,使用Function#call:

$("#run").click(function(){
    stepData[0].init.call(stepData);
});

根据您对问题的评论:

So the way I've got it is OK then?

是的,只要 stepData 是单例,就没有特别需要在其函数中使用 this

有关的更多信息(在我的博客上):

关于javascript - 使用 "this"更新对象内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25554203/

相关文章:

javascript - 为什么 'type=button' 不工作而不是 'type=submit'

javascript - iframe 触摸事件 preventDefault

javascript - javascript对象

javascript - 订购 key :value pairs of objects

javascript进入对象以填充变量

javascript - 如何仅使用 Javascript 设置特定 div block 的打开和关闭?

javascript - 背景图像不应出现在下拉菜单的标题中

javascript - 从查找或插入获取 ID,MongoDB

javascript - typescript :如何将对象映射到类型?

javascript - 类和数组真的只是 JavaScript 中的对象吗?