我想定期更新js对象(在创建对象后初始化之后),并尝试以下操作:
var data = {
foo: -1,
bar: -1,
refresh: function() {
this.foo = getFoo();
this.bar = getBar();
}()
}
目前这不起作用,this
似乎没有引用数据对象。我可以尝试一些不同的排列 - 但是想知道我是不是在这里咆哮错了树?我应该为需要定期更新的对象(外部调用)使用什么样的模式。
答案 0 :(得分:2)
你非常接近,抛弃那些以()
结尾的人:
var data = {
foo: -1,
bar: -1,
refresh: function() {
this.foo = getFoo();
this.bar = getBar();
} // <== here
}; // <== Also, semicolon here for best practice
用法:
data.refresh();
您需要提供getFoo
和getBar
函数,或接受refresh
中的参数,例如:
var data = {
foo: -1,
bar: -1,
refresh: function(newFoo, newBar) {
this.foo = newFoo;
this.bar = newBar;
}
};
用法:
data.refresh(42, 52);
答案 1 :(得分:1)
this
将调用你的函数。在您的情况下,您会立即自动调用它,因此,它将由window
对象调用。
你能做的是:
var data = {
foo: -1,
bar: -1,
refresh: function() {
this.foo = getFoo();
this.bar = getBar();
}
}
data.refresh();