博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js学习总结----柯里化函数
阅读量:5127 次
发布时间:2019-06-13

本文共 1234 字,大约阅读时间需要 4 分钟。

柯里化函数函数思想:一个JS预处理的思想->利用函数执行可以形成一个不销毁的私有作用域的原理,把需要预先处理的内容都存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预先存储的值进行一系列的操作。

下面是模拟函数的bind方法的myBind,具体代码如下

Function.prototype.myBind = function myBind(context){    //this->fn    var _this = this;    var outerArg = Array.prototype.slice.call(arguments,1);    //兼容    if("bind" in Function.prototype){        return this.bind.apply(this,[context].concat(outerArg));    }    //不兼容    return function(){        var innerArg = Array.prototype.slice.call(arguments,0);        innerArg.length===0?innerArg[innerArg.length] = window.event:null;//解决ie里面不传递e,是传递window.event        var arg = outerArg.concat(innerArg);        _this.apply(context,arg)    }}//把传递进来的callback这个方法中的this预先处理为context(模拟函数的bind方法,兼容ie6-8)function bind(callback,context){    context = context || window;    var outerArg = Array.prototype.slice.call(arguments,2);//存储的参数    return function(){        var innerArg = Array.prototype.slice.call(arguments,0);//存储的e        callback.apply(context,outerArg.cancat(innerArg));    }}var obj = {name:"zhangsan"};function fn(num1,num2){    console.log(this,num1,num2);}window.setTimeout(fn.myBind(obj,100,200),1000);//这里把fn里面的this变成了obj

 

转载于:https://www.cnblogs.com/diasa-fly/p/7300626.html

你可能感兴趣的文章
Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine
查看>>
VBA:从Excel批量往Access数据库传数据时显示找不到目标对象的异常
查看>>
前端笔记——获取url里面的参数值
查看>>
在视图中使用时间
查看>>
python学习笔记(三)字符串方法、读写文件、json处理以及函数
查看>>
前端对于需要对参数做处理的接口的相关技术
查看>>
阅读计划——《软件需求十步走》01
查看>>
Redis 发布与订阅模式
查看>>
JAVA8方法引用
查看>>
js中数组的字符串表示
查看>>
优先队列实现哈弗曼最小权值
查看>>
Oracle递归树select...start with... connect by ...prior 理解
查看>>
常用数据结构
查看>>
矩阵转置
查看>>
ecshop功能目录
查看>>
flask 过滤器
查看>>
bzoj 2962 序列操作 —— 线段树
查看>>
洛谷 P4512 [模板] 多项式除法
查看>>
poj1631——树状数组求LIS
查看>>
Bitmap 位图
查看>>