javascript - 改变值对象Javascript

标签 javascript jquery

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

这是我的示例对象:

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

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

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

我创建了一个 JsFiddle 有一个关于我的对象行为的小例子。我意识到这是 Javascript 的行为方式,但我不明白为什么。

最佳答案

问题是因为单击处理程序中的 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

关于javascript - 改变值对象Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24022433/

相关文章:

javascript - 正则表达式匹配美元符号加空格后的任何内容

javascript - 获取新创建的 html 属性的值

javascript - 我想要 jquery 可拖动脚本来记住位置

javascript - 获取数组中的差异

javascript - 基于按钮显示图像

javascript - 在选择下拉列表中选择特定选项时添加输入框

javascript - Bootstrap 模式对话框中的验证

jquery - 如何在具有特定类的最后一个列表元素之后附加 html?

javascript - 开发中新的 javascript 文件未加载到浏览器

javascript - 页面在加载时闪烁 - 隐藏/显示 javascript - Total Newbie