Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改对象';方法的属性值_Javascript_Jquery_Web - Fatal编程技术网

Javascript 更改对象';方法的属性值

Javascript 更改对象';方法的属性值,javascript,jquery,web,Javascript,Jquery,Web,我对JavaScript和jQuery都是新手,但在其他语言上有一些编程经验。这是我写的: var pageFunctionality = { value: 0, onUpdate: function () { $("#numberOfTimes").html(pageFunctionality.value); console.log(pageFunctionality.value + "!"); }, onBtnClick: fu

我对JavaScript和jQuery都是新手,但在其他语言上有一些编程经验。这是我写的:

var pageFunctionality = {
    value: 0,
    onUpdate: function () {
        $("#numberOfTimes").html(pageFunctionality.value);
        console.log(pageFunctionality.value + "!");
    },
    onBtnClick: function () {
        this.value++;
        console.log(this.value);
        pageFunctionality.onUpdate();
    }
};
$(document).ready(function () {
    $("#btn").click(pageFunctionality.onBtnClick);
});
问题是:当我在“onBtnClick”中记录“value”时,它明显增加,但当我在onUpdate方法中记录它时,它一直是0

这是它产生的输出:

1
0!
2
0!
3
0!
4
0!

我希望您能帮助我。

您的
onBtnClick()
处理程序中的
this
的值有问题,因为从
处理程序调用它的方式。click()
处理程序。默认情况下,jQuery将把
这个
设置为事件处理程序挂接到的DOM元素

如果不需要访问单击处理程序中的DOM元素,则可以将代码更改为:

$(document).ready(function () {
    $("#btn").click(pageFunctionality.onBtnClick.bind(pageFunctionality));
});
像这样使用
.bind()
将覆盖
this
的值,使其成为您想要的值


或者,由于
pageFunctionality
是一个单例,您可以停止在事件处理程序中使用
this
,直接参考
pageFunctionality
,如下所示:

var pageFunctionality = {
    value: 0,
    onUpdate: function () {
        $("#numberOfTimes").html(pageFunctionality.value);
        console.log(pageFunctionality.value + "!");
    },
    onBtnClick: function () {
        pageFunctionality.value++;
        console.log(pageFunctionality.value);
        pageFunctionality.onUpdate();
    }
};
$(document).ready(function () {
    $("#btn").click(pageFunctionality.onBtnClick);
});

一致使用
pageFunctionality.value
<代码>此
在onBtnClick中不是您认为的那样