js基础练习题 二次封装函数
题目描述
已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:
1、返回一个函数 result,该函数接受一个参数
2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致
1、返回一个函数 result,该函数接受一个参数
2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致
示例1
输入
var sayIt = function(greeting, name, punctuation) { return greeting + ', ' + name + (punctuation || '!'); }; partial(sayIt, 'Hello', 'Ellie')('!!!');
输出
Hello, Ellie!!!
代码
function partial(fn, str1, str2) {
var result=function(str3){
return fn.apply(this,[str1,str2,str3])
};
return result
}
要点
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
// call和apply必须显式地调用str3,立即执行// bind不是立即执行,未传入str3时,并未执行,只是返回一个函数,等待参数传入// this用于上下文不确定的情况// callfunction partial(fn, str1, str2) { function result(str3) { return fn.call(this, str1, str2, str3); } return result;}// apply(这里只是为了对照)function partial(fn, str1, str2) { function result(str3) { return fn.apply(this, [str1, str2, str3]); } return result;}// ES6 this指向undefined.const partial = (fn, str1, str2) => str3 => fn(str1, str2, str3); |

浙公网安备 33010602011771号