apply说明
apply也是函数的一个方法,用法类似于call,
apply用来改变函数内部this指向,第二个参数是数组或者类数组的集合,虽然是以一个集合的形式传进去的,但是函数接收时还是一个散乱的
举例说明
function fn(){
console.log([...arguments]);
console.log(this);
console.log('-----0v0-------');
}
var obj = {
a:12,
b:13
}
fn.call(obj,4,5,6,7);
fn.apply(obj,[5,6,7,8]);
手写一个myApply()
Function.prototype.myApply = function(context,arg){
//this 就是fn
let a = Symbol();//产生一个唯一不重复的值
arg = arg || [];
context = context || window;
context[a] = this;//a是一个变量,所以只能用[]去取值,this就是fn
let res = context[a](...arg);//让fn 执行
delete context[a];
return res;
}
fn.myApply(obj,[1,2,3,4);
输出结果: