javascript中利用柯里化函數(shù)實現(xiàn)bind方法【推薦】
• 柯理化函數(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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JavaScript函數(shù)柯里化實現(xiàn)原理及過程
- Javascript柯里化實現(xiàn)原理及作用解析
- 淺析JavaScript 函數(shù)柯里化
- js函數(shù)柯里化的方法和作用實例分析
- 通過實例了解Javascript柯里化流程
- javascript實現(xiàn)函數(shù)柯里化與反柯里化過程解析
- JavaScript偏函數(shù)與柯里化實例詳解
- JS中精巧的自動柯里化實現(xiàn)方法
- 淺談JS中的反柯里化( uncurrying)
- 詳解JS中的柯里化(currying)
- JavaScript函數(shù)柯里化原理與用法分析
- 淺談JS中的bind方法與函數(shù)柯里化
- Javascript閉包與函數(shù)柯里化淺析
- 深入剖析JavaScript中的函數(shù)currying柯里化
- JavaScript函數(shù)柯里化詳解
- javascript中利用柯里化函數(shù)實現(xiàn)bind方法
- 深入解析JavaScript中函數(shù)的Currying柯里化
- 怎樣用Javascript實現(xiàn)函數(shù)柯里化與反柯里化
相關(guān)文章
javascript 窗口加載蒙板 內(nèi)嵌網(wǎng)頁內(nèi)容
用于在現(xiàn)有窗口上加載蒙板,在蒙板內(nèi)在嵌入其他頁面內(nèi)容2010-11-11
在Google 地圖上實現(xiàn)做的標(biāo)記相連接
這篇文章主要介紹了在Google 地圖上實現(xiàn)做的標(biāo)記相連接,需要的朋友可以參考下2015-01-01
javascript中的Base64、UTF8編碼與解碼詳解
本文給大家介紹的是javascript中的Base64、UTF8編碼與解碼的函數(shù)源碼分享以及使用范例,十分實用,推薦給小伙伴們,希望大家能夠喜歡。2015-03-03
淺談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛
下面小編就為大家?guī)硪黄獪\談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10

