什么是 apply
apply 和 call 高度相似,只是接收参数的方式不一样。
- call 是参数依次排列
- apply 是参数为一个数组
手动实现
注意点与 call 类似
Function.prototype.apply = function (context, arr) {
var context = Object(context) || window;
context.fn = this;
var result;
if (!arr) {
result = context.fn();
} else {
var args = [];
for (var i = 0, len = arr.length; i < len; i++) {
args.push("arr[" + i + "]");
}
result = eval("context.fn(" + args + ")");
}
delete context.fn;
return result;
};