🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# apply 和 call 的用法 fn.call( obj , arg1 , arg2 , arg3 , ... ); fn.apply( obj , arguments ); ## apply 和 call 的 相同点: 都将 fn 的this 指向 obj (改变this指向) 我们可以借用这两个方法来修正this指向丢失问题, 也可以用来实现 借用其他函数的属性方法 ## apply 和 call 的 不同点: call方法是将参数以多个值的形式传入fn中 apply方法是将参数以数组的形式传入fn中 日常开发中,我们更多的是需要对数组来做一些操作, 但是许多js内置对象中的方法支持传入的参数都几个或是多个参数, 那么这里利用apply 方法就可以很方便的对这些数组完成更加高性能的操作。 最直观的例子: var arr = [16,2,4,12,6,7]; // 对一个数组取最大值,而 Math.max() 仅支持对两个或多个数值取最大值 一般我们会想 function max(arr){ var maxNum = 0 for(var i =0;i<arr.length;i++){ maxNum = Math.max(maxNum,arr[i]); } return maxNum; } max(arr); 其实apply方法一句话就完成了 Math.max.apply( null ,arr);