Javascript 更改对象';方法的属性值
我对JavaScript和jQuery都是新手,但在其他语言上有一些编程经验。这是我写的: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
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中不是您认为的那样