我在javascript,内容函数和值中有一个普通的对象。
这是我的示例对象:
var MyObject = {
myData: 1,
a: function() {},
b: function() {}
}
现在在函数a
中有一些触发它的逻辑,但它应该改变myData
属性的值。
但是当我尝试从方法b
中获取它时,该值将作为未定义的值而不是更改的值。
我创建了一个 JsFiddle ,其中包含了我对象行为的一个小例子。我意识到Javascript的行为方式,但我不明白为什么。
答案 0 :(得分:2)
问题是因为单击处理程序中的this
引用了被单击的元素,而不是处理程序函数所属的对象。您需要缓存this
:
a: function () {
var self = this;
$('.setValue').click(function() {
self.myData = 2;
});
},
b: function () {
var self = this;
$('.getValue').click(function() {
alert(self.myData);
});
}
答案 1 :(得分:0)
在JavaScript中,每个函数都有自己的this
参数。在你的情况下,你想要访问外部函数的这个变量,所以你应该这样做:
var that = this;
这是更新的jsfiddle: http://jsfiddle.net/xaaLQ/5/