我正在尝试更新对象本身内部的值。我有以下代码:
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/