美文网首页
js学习note4 call/apply/bind的区别*

js学习note4 call/apply/bind的区别*

作者: 皮皮M | 来源:发表于2018-05-14 00:25 被阅读0次

    this指向问题,call和apply和bind的区别。
    call和apply接受的参数不同,结果一样:
    apply接受的是数组:apply(obj, [参数1, 参数2, 参数3])
    call是以直接接受参数的形式:call(obj, 参数1, 参数2, 参数3)
    bind和call写法一样,call是直接运行这个函数,bind是返回一个函数,要自己去调用。

    let a = 5
    let obj = {
      a: 8,
      getA: function () {
        console.log(this.a)
      }
    }
    let obj2 = {
      a:100
    }
    // 谁调用这个函数,this指向谁
    // obj调用getA()这个函数,this指向obj
    obj.getA() // 8
    
    // call直接运行函数
    // 1、obj调用getA()这个函数,this指向obj
    // 2、但是用了call()这个方法,this指向obj2
    // → obj2继承obj的getA()方法,改变指向
    obj.getA.call(obj2) // 100
    
    // bind返回一个新的函数
    let newGetA = obj.getA.bind(obj2)
    newGetA() // 100
    

    2018/05/07

    相关文章

      网友评论

          本文标题:js学习note4 call/apply/bind的区别*

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