如何在javascript函数中使用局部变量

如何在javascript函数中使用局部变量,javascript,jquery,Javascript,Jquery,如果术语不适用,我道歉-javascript不是我的事 我有一个功能: var input = { getVal: function () { return $(this).attr("data-current-val"); }, setVal: function () { $(this).attr("data-current-val", $(this).val()); }, valH

如果术语不适用,我道歉-javascript不是我的事

我有一个功能:

var input = {
    getVal: function () {
        return $(this).attr("data-current-val");
    },
    setVal: function () {
        $(this).attr("data-current-val", $(this).val());
    },
    valHasChanged: function () {
        return $(this).val() !== $(this).attr("data-current-val");
    }
};
正如你所看到的,有一些重复。首先,我多次重复
数据属性
名称;其次,我多次选择一个
jquery对象

我试图消除重复。例如,对于数据属性,在顶部添加
节点:“数据当前值”
,然后用
此.node
代替字符串调用它。这会导致错误,尝试以相同的方式定义并使用
jquery对象时也是如此

类似地,valHasChanged
$(this).attr(“data current val”)
中的布尔值的一部分在逻辑上可以被
this.getVal
替换,但这似乎也不起作用。我哪里出错了


非常感谢您的帮助。

您想实现什么目标?确实需要一些上下文。上面的代码是更大解决方案的一部分。它与文本框数据更改相关(jqueryonchange方法不能按需要工作)。这些只是从输入中获取、设置和比较数据的小函数。这确实是我试图纠正的模式,并理解某些东西不能按我认为的方式工作的原因。尝试
window.input.node
。如果不将该方法调用为
input.hasvalchange()
,但将
this
指向DOM元素(例如,当将其用作事件侦听器时),则不能在
valHasChanged
中使用
this.getVal()
。只需参考
input.getVal
,使用
input.getVal.call(this)
。或者,不要使用对象,而是将属性名称之类的内容存储在单独的
常量中。