更改值对象Javascript

时间:2014-06-03 18:33:13

标签: javascript jquery

我在javascript,内容函数和值中有一个普通的对象。

这是我的示例对象:

var MyObject = {
    myData: 1,
    a: function() {},
    b: function() {}   
}

现在在函数a中有一些触发它的逻辑,但它应该改变myData属性的值。

但是当我尝试从方法b中获取它时,该值将作为未定义的值而不是更改的值。

我创建了一个 JsFiddle ,其中包含了我对象行为的一个小例子。我意识到Javascript的行为方式,但我不明白为什么。

2 个答案:

答案 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);
    });
}

Updated fiddle

答案 1 :(得分:0)

在JavaScript中,每个函数都有自己的this参数。在你的情况下,你想要访问外部函数的这个变量,所以你应该这样做:

var that = this;

这是更新的jsfiddle: http://jsfiddle.net/xaaLQ/5/