javascript中利用柯里化函數實現bind方法【推薦】
• 柯理化函數思想:一個js預先處理的思想;利用函數執(zhí)行可以形成一個不銷毀的作用域的原理,把需要預先處理的內容都儲存在這個不銷毀的作用域中,并且返回一個小函數,以后我們執(zhí)行的都是小函數,在小函數中把之前預先存儲的值進行相關的操作處理即可;
• 柯里化函數主要起到預處理的作用;
• bind方法的作用:把傳遞進來的callback回調方法中的this預先處理為上下文context;
/** * bind方法實現原理1 * @param callback [Function] 回調函數 * @param context [Object] 上下文 * @returns {Function} 改變this指向的函數 */ function bind(callback,context) { var outerArg = Array.prototype.slice.call(arguments,2);// 表示取當前作用域中傳的參數中除了fn,context以外后面的參數; return function (){ var innerArg = Array.prototype.slice.call(arguments,0);//表示取當前作用域中所有的arguments參數; callback.apply(context,outerArg.concat(innerArg)); } }
/** * 模仿在原型鏈上的bind實現原理(柯理化函數思想) * @param context [Object] 上下文 * @returns {Function} 改變this指向的函數 */ 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中利用柯里化函數實現bind方法【推薦】就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JavaScript函數柯里化實現原理及過程
- Javascript柯里化實現原理及作用解析
- 淺析JavaScript 函數柯里化
- js函數柯里化的方法和作用實例分析
- 通過實例了解Javascript柯里化流程
- javascript實現函數柯里化與反柯里化過程解析
- JavaScript偏函數與柯里化實例詳解
- JS中精巧的自動柯里化實現方法
- 淺談JS中的反柯里化( uncurrying)
- 詳解JS中的柯里化(currying)
- JavaScript函數柯里化原理與用法分析
- 淺談JS中的bind方法與函數柯里化
- Javascript閉包與函數柯里化淺析
- 深入剖析JavaScript中的函數currying柯里化
- JavaScript函數柯里化詳解
- javascript中利用柯里化函數實現bind方法
- 深入解析JavaScript中函數的Currying柯里化
- 怎樣用Javascript實現函數柯里化與反柯里化
相關文章
JavaScript undefined及null區(qū)別實例解析
這篇文章主要介紹了JavaScript undefined及null區(qū)別實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07javascript實現簡約的頁面右下角點擊彈出窗口示例【測試可用】
這篇文章主要介紹了javascript實現的頁面右下角點擊彈出窗口功能,結合實例形式詳細分析了javascript頁面右下角點擊彈出窗口功能的相關步驟、原理與注意事項,需要的朋友可以參考下2023-07-07js中的preventDefault與stopPropagation詳解
本篇文章主要是對js中的preventDefault與stopPropagation進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01