高级用法

85 阅读1分钟

1. var arr = [].slice.call(arguments)

  • 常见就是伪数组转真数组,函数的参数就是伪数组
  • slice是纯函数,不会改变原数组,会返回一个新值
  • slice不传参数等于就是返回一个数组的本身
  • arguments本身是没有slice方法的
  • call是改变this指向,把slice方法中的this指向改为arguments
[].slice.call(arguments)等于通过call给arguments加上slice方法,然后执行slice方法不传参,所以返回一个真数组了

image.png

2. adder.apply(null,arguments)

意思就是adder方法的this改为arguments 3. arguments.reduce((a,b)=>a+b) 4. func.apply(func,arguments) 5. [].push.apply(arg1,arg2) 6. fn1.bind(null,fn2) 7. fn1.call(obj,arguments) 8. func.apply(res,Array.prototype.slice.call(arguments,1))