美文网首页
call和apply

call和apply

作者: 阿凯_8b27 | 来源:发表于2019-08-26 10:51 被阅读0次

    call和apply都是在方法执行时候替换作用域 ,也就是this
    this谁调用他,this就执行谁

    var a = 1;

    let obj = {

    a : 2,

    b: function(){

    console.log(this.a);

    }

    }

    console.log(obj.b())
    var dd = obj.b;

    dd();
    再obj.b()其中 this指向obj, 可以看到这块是obj调用函数b,输出为2
    在 dd函数中     this指向window ,dd() 相当于window.dd(),this指向window,输出为1
    这时候,如果想调用dd函数中,作用域为obj时候,call和apply第一个参数都为当前作用域执行,如果为null或者是undefined,则指向window
    dd.call(obj)                  2
    dd.apply(obj)                2
    dd.apply(null)                1
    dd.apply(null)                 1
    或者此处也可以使用bind,注意bind绑定对象后返回值是一个函数

    call后面参数为多个
    apply后面参数为数组

    相关文章

      网友评论

          本文标题:call和apply

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