你的位置:首页 > Java教程

[Java教程]柯里化、软绑定


var currying = function(fn){                var Args = [].slice.call(arguments, 1); //此时Args = ['aaa'];                return function(/*get调用时传入的参数*/){          //此时arguments = ['bbb','ccc','ddd','eee']; newArgs = ['aaa','bbb','ccc','ddd','eee'];          var newArgs = Args.concat([].slice.call(arguments));                     return fn.apply(null, newArgs);        }      };                               var get = currying(function(){         //这里的allArgs = newArgs;        var allArgs = [].slice.call(arguments);                 console.log(allArgs.join(';'));       }, 'aaa');            get('bbb','ccc','ddd','eee')  //[aaa;bbb;ccc;ddd;eee]

主要是受到《你不知道的JavaScript(上卷)》中,软绑定softBind()方法启发,当中应用了柯里化,这种方式确实刚开始不好理解,观看了张鑫旭的博客后,才对柯里化的方式有了一点了解。

软绑定代码,如下:

if( !Function.prototype.softBind ){        Function.prototype.softBind = function(obj){          var fn = this;                    var curried = [].slice.call(arguments, 1);          var bound = function(){            return fn.apply(              ( !this || this ===(window || global) ) ? obj : this,              curried.concat.apply( curried , arguments )            );          };          bound.prototype = Object.create( fn.prototype );          return bound;        };      }

软绑定优化了硬绑定,使this指向更加灵活,可以使用隐式绑定或者显式绑定修改this。




深圳自助游景点攻略大全深圳旅游需要多少钱广东深圳旅游景点深圳去深圳旅游要多少钱深圳到芬兰旅游流光溢彩灯会展 热热闹闹过元宵 2015长隆欢乐世界三八妇女节女士半价时间?广州长隆欢乐世界3.8女性半价几天? 抓住最后的年味儿 到菩提古镇喜气洋洋闹元宵 用一个字形容云南16州市 你觉得是什么 水丹花越南餐厅:望京绽放,暖体清心 盘点江西八大采摘地 与你共享秋收喜悦 广州特色美味小吃有那些? 梧州石表山有什么特产? 星光大道广州区海选活动地点?星光大道海选在广州华南植物园吗? 2015年广东街坊文化节开幕式什么时候?广州街坊文化节举办地点在哪里? 华南植物园街坊欢乐节什么时候?广州华南植物园街坊欢乐节时间? 华南植物园中秋游园会活动时间?广州华南植物园中秋游园会有什么好玩的? 2015国庆节去哪旅游?国庆节旅游好去处有哪些? 雨卜苗寨国庆节门票优惠吗?十一融水雨卜苗寨有什么好玩的? 长寿水晶宫网上购票?水晶宫门票怎么预约? 圣泉谷在哪里?大新圣泉谷景区好玩吗? SFH325 FA-4 Datasheet SFH325 FA-4 Datasheet SFH325-3 Datasheet SFH325-3 Datasheet SFH325-3/4 Datasheet SFH325-3/4 Datasheet 海南省少数民族 海南省少数民族 海南省少数民族 香港买什么奶粉 香港买什么奶粉 香港买什么奶粉 宝安羊台山 宝安羊台山 宝安羊台山