二次封装函数(1)
题目描述
已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:
1、返回一个函数 result,该函数接受一个参数
2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致
1 // call和apply必须显式地调用str3,立即执行,call调用的是具体参数
2 function partial(fn, str1, str2) {
3 function result(str3){
4 return fn.call(this,str1,str2,str3);
5 }
6 return result;
7 }
8
9 //apply调用的是数组
10 function partial(fn, str1, str2) {
11 function result(str3){
12 return fn.apply(this,[str1,str2,str3]);
13 }
14 return result;
15 }
16
17 //bind不是立即执行,未传入str3时,并未执行,只是返回一个函数,等待参数传入
18 function partial(fn, str1, str2) {
19 function result(str3){
20 return fn.bind(this,str1,str2)(str3);
21 }
22 return result;
23 }
24
25 // 匿名函数,默认this绑定global,与bind的第一个参数为this时效果一样。
26 function partial(fn, str1, str2) {
27 return function(str3) {
28 return fn(str1, str2, str3);
29 }
30 }
来源:牛客网
版权声明:本文为daheiylx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。