多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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);