题目描述

已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:
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用于上下文不确定的情况
// call
function 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);

转载于:https://www.cnblogs.com/jiye123/p/8134610.html

js基础练习题 二次封装函数相关推荐

  1. js基础练习题(1)

    1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...

  2. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

  3. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  4. js笔记(一)js基础、程序结构、函数

    大标题 小节 一.js 基础 1. javascript的组成: 2. 运行js: 3. 打印信息: 4. 关键字var: 5. js中的数据类型: 6. NaN(not a number): 7. ...

  5. Three.js基础探寻二——正交投影照相机

    本篇主要介绍照相机中的正交投影照相机. 第一篇传送门:Three.js基础探寻一 1.照相机 图形学中的照相机定义了三维空间到二维屏幕的投影方式. 针对投影方式照相机分为正交投影照相机和透视投影照相机 ...

  6. Javascript学习总结 - JS基础系列 二

    简述 本系列将持续更新Javascript基础部分的知识,谁都想掌握高端大气的技术,但是我觉得没有一个扎实的基础,我认为一切高阶技术对我来讲都是过眼云烟,要成为一名及格的前端工程师,必须把基础打扎实了 ...

  7. EXT.NET高效开发(二)——封装函数

    在上一篇<EXT.NET高效开发(一)--概述>中,大致的介绍了一下EXT.NET.那么本篇就要继续完成未完成的事业了.说到高效开发,那就是八仙过海各显神通.比如使用代码生成器,这点大家可 ...

  8. Node.js基础(二)-- 模块化、npm与包

    1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程.对于整个系统来说,模块是可组合.分解和更换的单元. 1.1.1. 现实生活中的模块化 ...

  9. JS日期简介(二)常用日期函数

    1,日期的构造函数 查看js构造函数内容,可以了解其所支持的参数类型 interface DateConstructor { new(): Date; new(value: number): Date ...

最新文章

  1. 列表是否包含简短的包含功能?
  2. javase总结报告
  3. mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置
  4. php 仿高德,仿高德路线规划滑动效果
  5. Apache模块管理
  6. [转载] 【Python】set() 集合操作与运算 元素输出顺序
  7. Contexts for mac(程序快速调用工具)
  8. addEventListener兼容性问题
  9. CKA认证考题+解析
  10. Win11触摸键盘如何开启?
  11. java操作word宏
  12. ssh框架的学习之strut2小测试(2)
  13. win10桌面右键卡顿卡死解决方法
  14. NPDP知识推送-第七章产品生周期管理(3)
  15. HBase-Region的拆分与合并
  16. java未来发展潜力_Java语言未来是否还有发展前景
  17. HTTP:网络请求状态码204、304
  18. LightDB(pg) 通过DBeaver执行SQL发现SQL不能并行
  19. android 四方向摇杆源码,手游摇杆(一)最简单的四方向摇杆
  20. 等了15年,这本豆瓣评分高达9.3的编程巨著终于出版了!

热门文章

  1. 《C++PrimerPlus》阅读笔记 + 源码实践
  2. 笔记 - AliCloud 云数据库 简介
  3. [转]Oracle 表空间与数据文件
  4. mongodb 分组聚合_MongoDB按键值对进行聚合/分组
  5. Spring Boot实现简单的用户权限管理(超详细版)
  6. linux系统如何从字母切换为拼音,linux shell字母转换写法
  7. 【干货】路由黑洞的5种解决方法大PK
  8. EventBridge消息路由|高效构建消息路由能力
  9. OpenKruise 如何实现 K8s 社区首个规模化镜像预热能力
  10. 率先通过信通院容器规模化测评 阿里云获最高认证级别