1.用 apply()函数把数组转化为参数
apply在修改this指向的同时,还能够用数组传入参数
var arr = [1, 2, 3];
var obj = {
func: function (arg1, arg2, arg3) {
return arg1 + arg2 + arg3;
}
}
obj.func.apply(obj.func, arr); // 6
apply保持了原this指向,只是利用它可以用数组传参的特性而已。
用es6实现:
const arr = [1, 2, 3];
const obj = {
func(arg1, arg2, arg3) {
return arg1 + arg2 + arg3;
}
}
obj.func(...arr);
再举简单例子:
const circleAreaES5= (x = 1, y = 2, z = 3) => {
console.log(x+y+z,88888)
return x+y+z;
}
let params = [1,2,3];
// 使用apply
circleAreaES5.apply(undefined,params) // 6
// 使用展开运算符
circleAreaES5(...params) // 6
2.取数组中的最大值:
Math.max.apply(null,[1,2,3]) // 3
后续整理中