通俗易懂之JavaScript手动实现apply方法
📖手动实现apply方法与手动实现call方法有异曲同工之妙,无非就是参数形式不同。
call方法是一个一个的传参,把除第一个参数外的剩余所有参数传递给源函数。
apply方法的第二个参数是个数组,将数组中的每个元素作为参数传递给源函数。
若还不清楚如何手动实现call方法,请查看上一篇博文:通俗易懂之JavaScript手动实现call方法
手动实现apply方法与手动实现call方法原理相似,这里就不做代码注释了,只展示最终代码。
如果知道如何实现call方法,则很好理解;如果不知道如何实现call方法直接看的这篇博文,可以尝试着自己理解下,也是一个不错的选择。
function myApply(obj){
const target = obj || window;
const fn = Symbol['fn'];
target[fn] = this;
const para = arguments[1] || [];
const result = target[fn](...para);
delete target[fn];
return result;
}
/*** 测试myApply ***/
Function.prototype.myApply = myApply;
function printName(para1,para2){
console.log(this.name,para1,para2);
}
var obj1 = {name:'tom'};
printName.myApply(obj1,['good','boy']); // 输出tom good boy
至此结束,与诸君共勉~