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

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

 更新時間:2016年04月29日 15:11:52   投稿:jingxian  
下面小編就為大家?guī)硪黄猨avascript中利用柯里化函數(shù)實現(xiàn)bind方法【推薦】。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧

• 柯理化函數(shù)思想:一個js預(yù)先處理的思想;利用函數(shù)執(zhí)行可以形成一個不銷毀的作用域的原理,把需要預(yù)先處理的內(nèi)容都儲存在這個不銷毀的作用域中,并且返回一個小函數(shù),以后我們執(zhí)行的都是小函數(shù),在小函數(shù)中把之前預(yù)先存儲的值進行相關(guān)的操作處理即可;

• 柯里化函數(shù)主要起到預(yù)處理的作用;

• bind方法的作用:把傳遞進來的callback回調(diào)方法中的this預(yù)先處理為上下文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);// 表示取當(dāng)前作用域中傳的參數(shù)中除了fn,context以外后面的參數(shù);
  return function (){
    var innerArg = Array.prototype.slice.call(arguments,0);//表示取當(dāng)前作用域中所有的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);
  }
}

以上這篇javascript中利用柯里化函數(shù)實現(xiàn)bind方法【推薦】就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

闵行区| 凤阳县| 清远市| 乌鲁木齐市| 罗江县| 崇义县| 沾化县| 淳安县| 镇坪县| 大冶市| 晋宁县| 蒙山县| 苗栗县| 桂平市| 彭山县| 唐海县| 长兴县| 岳阳市| 阜新| 济源市| 闵行区| 垦利县| 连城县| 腾冲县| 康马县| 乌拉特前旗| 桑植县| 宝丰县| 高台县| 万载县| 灵宝市| 新泰市| 西贡区| 大邑县| 南涧| 昌平区| 扬州市| 芷江| 永春县| 福泉市| 灵川县|