更改值对象Javascript
我有一个javascript中的普通对象,包含函数和值 这是我的示例对象:更改值对象Javascript,javascript,jquery,Javascript,Jquery,我有一个javascript中的普通对象,包含函数和值 这是我的示例对象: var MyObject = { myData: 1, a: function() {}, b: function() {} } 现在在函数a中有一些逻辑触发,但它甚至应该更改myData属性的值 但是当我尝试从方法b获取它时,该值是一个未定义的值,而不是更改的值 我创建了一个,其中有一个对象行为的小示例。我意识到这是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,我明白了:)谢谢你,谢谢你,一切都好了!:)@法布里齐奥没问题,很乐意帮忙谢谢:)等几分钟接受答案:)