二次封装函数(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 }

 

来源:牛客网

posted on 2018-04-21 11:00  大黑ylx  阅读(186)  评论(0编辑  收藏  举报