美文网首页
apply call bind三者的已同

apply call bind三者的已同

作者: JackLee_ | 来源:发表于2018-02-28 10:22 被阅读0次

    apply、call、bind 三者相比较,之间又有什么异同呢?何时使用 apply、call,何时使用 bind 呢。简单的一个栗子:

    var obj = {
        x: 24,
    };
    
    var foo = {
        getX: function() {
            return this.x;
        }
    }
    
    console.log(foo.getX.bind(obj)());  //24
    console.log(foo.getX.call(obj));    //24
    console.log(foo.getX.apply(obj));   //24
    

    三个输出的都是24,但是注意看使用 bind() 方法的,他后面多了对括号。

    也就是说,区别是,当你希望改变上下文环境之后并非立即执行,而是回调执行的时候,使用 bind() 方法。而 apply/call 则会立即执行函数。

    再总结一下:

    • apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;

    • apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;

    • apply 、 call 、bind 三者都可以利用后续参数传参;

    1. 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

    相关文章

      网友评论

          本文标题:apply call bind三者的已同

          本文链接:https://www.haomeiwen.com/subject/uchbxftx.html