JavaScript一般对象抛出不好的价值

时间:2015-10-14 19:47:03

标签: javascript

我想问一些事情,因为我很困惑。我有这个对象:

        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时。

我想问一些事情,因为我很困惑。我有这个对象: 我错过了什么?当对象功能被点击事件触发时,它才起作用。

有人可以解释一下吗?我会很感激的。

1 个答案:

答案 0 :(得分:1)

您需要将函数绑定到对象:

.on('click', this.bonusCheckboxClick.bind(this));

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind