我想问一些事情,因为我很困惑。我有这个对象:
var BonusesObject = {
priceTotal: 0,
bonusCheckboxClick: function(){
var price = 5;
this.priceTotal = price;
console.log("works, " + this.priceTotal);
},
getPrice: function(){
return this.priceTotal;
},
init: function(){
$('input:checkbox').on('click', this.bonusCheckboxClick);
}
};
BonusesObject.init();
//now when I will fire on click event and BonusesObject.getPrice
it will give me 0 instead of 5.
现在,当我调用BonusesObject.getPrice时,它会给我0,因为它应该。现在当我手动调用BonusesObject.bonusCheckboxClick和BonusesObject.getPrice时,它会给ma 5,就像它应该的那样。但是当函数bonusCheckboxClick将被调用时('点击',this.bonusCheckboxClick)它会抛出控制台正确值5但是当我将调用BonusesObject.getPrice它仍然给我0时。
我想问一些事情,因为我很困惑。我有这个对象: 我错过了什么?当对象功能被点击事件触发时,它才起作用。
有人可以解释一下吗?我会很感激的。
答案 0 :(得分:1)
您需要将函数绑定到对象:
.on('click', this.bonusCheckboxClick.bind(this));
文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind