文章标题

1、考察点call、apply

var a = Function.prototype.call.apply(function(a){ return a; }, [0,4,3]);
console.log(a);  // 4

分解:

(Function.prototype.call).apply(function(a){ return a; }, [0,4,3]);

注意:fun.apply(obj, args)等价于obj.fun(args)

故上面的表达式可以改为

(function(a){ return a; }).call(0, 4, 3);

call的第一个值为要绑定作用域,后面为参数

相当于,

(function(a, b){ return a; }).call(0, 4, 3); // 0为绑定的作用域(可忽略),a=4, b=3
原文地址:https://www.cnblogs.com/Zting00/p/7497630.html