国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

javascript中利用柯里化函數(shù)實現(xiàn)bind方法

2024-05-06 16:30:33
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要為大家詳細介紹了javascript中利用柯里化函數(shù)實現(xiàn)bind方法,感興趣的小伙伴們可以參考一下
 

柯理化函數(shù)思想:一個js預先處理的思想;利用函數(shù)執(zhí)行可以形成一個不銷毀的作用域的原理,把需要預先處理的內容都儲存在這個不銷毀的作用域中,并且返回一個小函數(shù),以后我們執(zhí)行的都是小函數(shù),在小函數(shù)中把之前預先存儲的值進行相關的操作處理即可;
柯里化函數(shù)主要起到預處理的作用;
bind方法的作用:把傳遞進來的callback回調方法中的this預先處理為上下文context;

/*** bind方法實現(xiàn)原理1* @param callback [Function] 回調函數(shù)* @param context [Object] 上下文* @returns {Function} 改變this指向的函數(shù)*/function bind(callback,context) { var outerArg = Array.prototype.slice.call(arguments,2);// 表示取當前作用域中傳的參數(shù)中除了fn,context以外后面的參數(shù); return function (){  var innerArg = Array.prototype.slice.call(arguments,0);//表示取當前作用域中所有的arguments參數(shù);  callback.apply(context,outerArg.concat(innerArg)); }}
 /*** 模仿在原型鏈上的bind實現(xiàn)原理(柯理化函數(shù)思想)* @param context [Object] 上下文* @returns {Function} 改變this指向的函數(shù)*/Function.prototype.mybind = function mybind (context) { var _this = this; var outArg = Array.prototype.slice.call(arguments,1); // 兼容情況下 if('bind' in Function.prototype) {  return this.bind.apply(this,[context].concat(outArg)); } // 不兼容情況下 return function () {  var inArg = Array.prototype.slice.call(arguments,0);  inArg.length === 0?inArg[inArg.length]=window.event:null;  var arg = outArg.concat(inArg);  _this.apply(context,arg); }}

以上就是利用柯里化函數(shù)實現(xiàn)bind方法的相關代碼,希望對大家學習javascript程序設計有所幫助。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金寨县| 公主岭市| 宜都市| 香河县| 青铜峡市| 凤冈县| 响水县| 兴义市| 察隅县| 牟定县| 崇礼县| 台东市| 林周县| 封丘县| 兰溪市| 原平市| 黔西县| 延长县| 界首市| 天水市| 屯昌县| 承德市| 鄂伦春自治旗| 都昌县| 榆林市| 林西县| 昆山市| 武夷山市| 云浮市| 浏阳市| 邹城市| 宁阳县| 昔阳县| 抚顺县| 镇巴县| 容城县| 平湖市| 南开区| 建昌县| 关岭| 河池市|