bind

    bind() 有什么用?我们先看一个常见的错误用法:

    'use strict';



    console.log('Hello, world!');

    // 输出'Hello, world!'



    var log = console.log;

    log('Hello, world!');

    // Uncaught TypeError: Illegal invocation

    如果你想用 log() 取代 console.log() ,按照上面的做法是不行的,因为直接调用 log() 传入的 this 指针是 undefined ,必须这么用:

    'use strict';



    var log = console.log;

    // 调用call并传入console对象作为this:

    log.call(console, 'Hello, world!')

    // 输出Hello, world!

    这样搞多麻烦!还不如直接用 console.log() 。但是, bind() 可以帮我们把 console 对象直接绑定在 log() this 指针上,以后调用 log() 就可以直接正常调用了:

    'use strict';



    var log = _.bind(console.log, console);

    log('Hello, world!');

    // 输出Hello, world!