更改值对象Javascript

更改值对象Javascript,javascript,jquery,Javascript,Jquery,我有一个javascript中的普通对象,包含函数和值 这是我的示例对象: var MyObject = { myData: 1, a: function() {}, b: function() {} } 现在在函数a中有一些逻辑触发,但它甚至应该更改myData属性的值 但是当我尝试从方法b获取它时,该值是一个未定义的值,而不是更改的值 我创建了一个,其中有一个对象行为的小示例。我意识到这是Javascript的行为,但我不明白为什么。问题是因为单击处理程序中的

我有一个javascript中的普通对象,包含函数和值

这是我的示例对象:

var MyObject = {
    myData: 1,
    a: function() {},
    b: function() {}   
}
现在在函数
a
中有一些逻辑触发,但它甚至应该更改
myData
属性的值

但是当我尝试从方法
b
获取它时,该值是一个未定义的值,而不是更改的值


我创建了一个,其中有一个对象行为的小示例。我意识到这是Javascript的行为,但我不明白为什么。

问题是因为单击处理程序中的这个指的是被单击的元素,而不是处理程序函数所属的对象。您需要缓存此:

a: function () {
    var self = this;
    $('.setValue').click(function() {
        self.myData = 2;
    });
},
b: function () {
    var self = this;
    $('.getValue').click(function() {
        alert(self.myData);
    });
}

在JavaScript中,每个函数都有自己的
参数。在您的情况下,您希望访问外部函数的this变量,因此应该执行以下操作:

var that = this;
以下是更新的JSFIDLE:

可能是范围
未将此
引用带入事件处理程序。您需要将它分配给处理程序之外的另一个变量,并通过闭包访问它,
var self=this.yhea,我明白了:)谢谢你,谢谢你,一切都好了!:)@法布里齐奥没问题,很乐意帮忙谢谢:)等几分钟接受答案:)