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

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-20 10:11:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

• bind方法的作用:把傳遞進(jìn)來(lái)的callback回調(diào)方法中的this預(yù)先處理為上下文context;

/*** bind方法實(shí)現(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實(shí)現(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ù)實(shí)現(xiàn)bind方法【推薦】就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江川县| 兴山县| 比如县| 宁陕县| 高碑店市| 阿坝县| 越西县| 比如县| 衡阳市| 门源| 盐池县| 霍邱县| 灵寿县| 同德县| 竹溪县| 扎赉特旗| 藁城市| 上栗县| 瓦房店市| 绥宁县| 石首市| 湘潭县| 天全县| 榕江县| 余庆县| 来宾市| 故城县| 松阳县| 颍上县| 高尔夫| 西贡区| 余姚市| 融水| 滨州市| 嘉荫县| 福州市| 盐城市| 桦川县| 茶陵县| 秀山| 蓬莱市|