javascript中利用柯里化函數(shù)實(shí)現(xiàn)bind方法【推薦】
• 柯理化函數(shù)思想:一個(gè)js預(yù)先處理的思想;利用函數(shù)執(zhí)行可以形成一個(gè)不銷毀的作用域的原理,把需要預(yù)先處理的內(nèi)容都儲(chǔ)存在這個(gè)不銷毀的作用域中,并且返回一個(gè)小函數(shù),以后我們執(zhí)行的都是小函數(shù),在小函數(shù)中把之前預(yù)先存儲(chǔ)的值進(jìn)行相關(guān)的操作處理即可;
• 柯里化函數(shù)主要起到預(yù)處理的作用;
• bind方法的作用:把傳遞進(jìn)來的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方法【推薦】就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JavaScript函數(shù)柯里化實(shí)現(xiàn)原理及過程
- Javascript柯里化實(shí)現(xiàn)原理及作用解析
- 淺析JavaScript 函數(shù)柯里化
- js函數(shù)柯里化的方法和作用實(shí)例分析
- 通過實(shí)例了解Javascript柯里化流程
- javascript實(shí)現(xiàn)函數(shù)柯里化與反柯里化過程解析
- JavaScript偏函數(shù)與柯里化實(shí)例詳解
- JS中精巧的自動(dòng)柯里化實(shí)現(xiàn)方法
- 淺談JS中的反柯里化( uncurrying)
- 詳解JS中的柯里化(currying)
- JavaScript函數(shù)柯里化原理與用法分析
- 淺談JS中的bind方法與函數(shù)柯里化
- Javascript閉包與函數(shù)柯里化淺析
- 深入剖析JavaScript中的函數(shù)currying柯里化
- JavaScript函數(shù)柯里化詳解
- javascript中利用柯里化函數(shù)實(shí)現(xiàn)bind方法
- 深入解析JavaScript中函數(shù)的Currying柯里化
- 怎樣用Javascript實(shí)現(xiàn)函數(shù)柯里化與反柯里化
相關(guān)文章
javascript檢查表單數(shù)據(jù)是否改變的方法
需要檢查用戶是否修改了一個(gè)表單中的內(nèi)容,可以使用本文提供的方法,如果修改了表單的內(nèi)容則返回true,沒修改則返回false,有需求的朋友可以參考下2013-07-07JavaScript undefined及null區(qū)別實(shí)例解析
這篇文章主要介紹了JavaScript undefined及null區(qū)別實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07JS利用cookie記憶當(dāng)前位置的防刷新導(dǎo)航效果
這篇文章主要介紹了JS利用cookie記憶當(dāng)前位置的防刷新導(dǎo)航效果,涉及JavaScript操作cookie及導(dǎo)航樣式布局的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10javascript實(shí)現(xiàn)簡約的頁面右下角點(diǎn)擊彈出窗口示例【測試可用】
這篇文章主要介紹了javascript實(shí)現(xiàn)的頁面右下角點(diǎn)擊彈出窗口功能,結(jié)合實(shí)例形式詳細(xì)分析了javascript頁面右下角點(diǎn)擊彈出窗口功能的相關(guān)步驟、原理與注意事項(xiàng),需要的朋友可以參考下2023-07-07js中的preventDefault與stopPropagation詳解
本篇文章主要是對js中的preventDefault與stopPropagation進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01