参考之前手写的call方法:
https://blog.csdn.net/qq593249106/article/details/83115935
Function.prototype.call2 = function (obj) {
var obj = obj || window;
var args = [];
for(var i = 1; i < arguments.length; i++) {
args.push('arguments[' + i + ']');
}
obj.fn = this;
var result = eval('obj.fn('+args+')');
delete obj.fn;
return result;
};
观察call和apply:
func.call(thisArg, arg1, arg2, arg3…)
func.apply(thisArg, [argsArray])
call和apply的区别就是,apply参数是以数组的形式传的,可以看看下面这个例子