最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年04月29日 08:45:48   作者:jocyci  
這篇文章主要為大家詳細介紹了javascript中利用柯里化函數(shù)實現(xiàn)bind方法,感興趣的小伙伴們可以參考一下

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

/**
* bind方法實現(xiàn)原理1
* @param callback [Function] 回調(diào)函數(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程序設計有所幫助。

相關文章

最新評論

凯里市| 新蔡县| 山阳县| 调兵山市| 辽源市| 仲巴县| 长丰县| 巴楚县| 苏州市| 平罗县| 巩留县| 晋城| 永修县| 宜章县| 会东县| 宾阳县| 永嘉县| 德令哈市| 正镶白旗| 浮梁县| 石河子市| 信阳市| 西宁市| 淅川县| 蕲春县| 长白| 都昌县| 新化县| 正镶白旗| 绥滨县| 武义县| 玉溪市| 米泉市| 抚顺县| 沧州市| 平谷区| 咸丰县| 巨野县| 巴林右旗| 咸宁市| 玉门市|