bind、call、apply 区别

2022-08-11  本文已影响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,...)()
上一篇下一篇

猜你喜欢

热点阅读