了解下划线绑定

时间:2014-05-16 18:59:38

标签: javascript underscore.js

    function checkBalance() {
        return this.balance;
    }

    function Person(name, balance) {
        this.name = name;
        this.balance = balance;
    }


    var me = new Person('tim', 1000);
    _.bind(checkBalance, Person);

    console.log(checkBalance()); //undefined

我知道这是一个checkBalance应该在Person对象的Prototype上的情况,但是我没能理解为什么bind方法在这里没有正常工作。我已经尝试将Person和我作为_.bind绑定checkBalance的上下文,但我一直都未定义。我在这里发生了什么,我未定义这个?

1 个答案:

答案 0 :(得分:3)

bind(func, obj)返回与func相同的新函数,但函数内部的this将引用obj

您将this函数中的checkBalance绑定到Person函数,似乎您的意思是将this绑定到me

试试这个:

var f = _.bind(checkBalance, me);
console.log(f()); //1000

或者,重新分配到同一个功能:

checkBalance = _.bind(checkBalance, me);
console.log(checkBalance()); //1000