场景:Math.max()返回给定的一组数字中的最大值,如果是数值数组,怎么从数组中返回最大值?

措施:1.使用Math.max.apply(null, numArray);numArray为任意长度的数组

           2.使用最新的扩展语句展开语法 Math.max(...arr);

扩展延申:call,apply,bind的区别?

          callapply的用法几乎一样,唯一的不同就是传递的参数不同,call只能一个参数一个参数的传入。
   apply则只支持传入一个数组,哪怕是一个参数也要是数组形式。最终调用函数时候这个数组会拆成一个个参数分别传入。
          bind方法,他是直接改变这个函数的this指向并且返回一个新的函数,之后再次调用这个函数的时候this都是指向bind绑定的第一个参数。bind传参方式跟call方法一致。

  
const obj = {}
function test(...args) {console.log(args)}
const newFn = test.bind(obj, '静态参数1', '静态参数2')
newFn('动态参数3', '动态参数4')

 总结:

  1. 当我们使用一个函数需要改变this指向的时候才会用到call`apply`bind
  2. 如果你要传递的参数不多,则可以使用fn.call(thisObj, arg1, arg2 ...)
  3. 如果你要传递的参数很多,则可以用数组将参数整理好调用fn.apply(thisObj, [arg1, arg2 ...])
  4. 如果你想生成一个新的函数长期绑定某个函数给某个对象使用,则可以使用const newFn = fn.bind(thisObj); newFn(arg1, arg2...)

       

相关文章:

  • 2021-12-18
  • 2021-11-04
  • 2022-01-10
  • 2021-05-04
  • 2022-02-08
  • 2022-12-23
  • 2022-12-23
  • 2022-02-02
猜你喜欢
  • 2021-06-20
  • 2022-12-23
  • 2021-05-27
  • 2022-03-08
相关资源
相似解决方案