美文网首页
bind、call、apply 区别

bind、call、apply 区别

作者: 码农私房菜 | 来源:发表于2022-08-11 15:59 被阅读0次

    1.call和apply会调用函数,且会改变函数内部的this指向
    2.call和apply传递的参数不一样,call传递参数aru1,aru2.形式 而apply必须是数组形式[arg]
    3.bind 不会调用函数,可以改变函数内部指向

    应用场景:
    1. call经常做继承
      • 使用方法:要改变this指向的函数.call(this的新指向,参数1,参数2……)
    2. apply经常和数组有关系,比如借助于数学对象实现数组的max、min
      • 使用方法:要改变this指向的函数.apply(this的新指向,数组),参数以数组形式传入
    3. bind不调用函数,但改变this指向,比如改变定时器内部的this指向
      • 使用方法:要改变this指向的函数.bind(this的新指向,参数1,参数2……)
    apply:调用一个对象的一个方法,用另一个对象替换当前对象。
    例如:B.apply(A, arguments);即 A 对象应用 B 对象的方法。 
    call:调用一个对象的一个方法,用另一个对象替换当前对象。
    例如:B.call(A, args1,args2); 即 A 对象调用 B 对象的方法。 
    bind: 除了返回是函数以外,它的参数和 call 一样。
    例如:B.bind(A,args1,args2,...)()
    

    相关文章

      网友评论

          本文标题:bind、call、apply 区别

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