欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

• 柯理化函數(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è)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript檢查表單數(shù)據(jù)是否改變的方法

    javascript檢查表單數(shù)據(jù)是否改變的方法

    需要檢查用戶是否修改了一個(gè)表單中的內(nèi)容,可以使用本文提供的方法,如果修改了表單的內(nèi)容則返回true,沒修改則返回false,有需求的朋友可以參考下
    2013-07-07
  • JavaScript undefined及null區(qū)別實(shí)例解析

    JavaScript undefined及null區(qū)別實(shí)例解析

    這篇文章主要介紹了JavaScript undefined及null區(qū)別實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • JS面試題中深拷貝的實(shí)現(xiàn)講解

    JS面試題中深拷貝的實(shí)現(xiàn)講解

    在本篇文章里小編給大家分享的是關(guān)于JS面試題中深拷貝的實(shí)現(xiàn)講解,需要的朋友們可以參考下。
    2020-05-05
  • JS利用cookie記憶當(dāng)前位置的防刷新導(dǎo)航效果

    JS利用cookie記憶當(dāng)前位置的防刷新導(dǎo)航效果

    這篇文章主要介紹了JS利用cookie記憶當(dāng)前位置的防刷新導(dǎo)航效果,涉及JavaScript操作cookie及導(dǎo)航樣式布局的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 微信小程序自定義底部、頂部、中間、左邊及右邊彈窗

    微信小程序自定義底部、頂部、中間、左邊及右邊彈窗

    這篇文章主要給大家介紹了關(guān)于微信小程序自定義底部、頂部、中間、左邊及右邊彈窗的相關(guān)資料,彈窗是小程序中非常重要的一種互動(dòng)方式,比如用戶注冊時(shí)錯(cuò)誤提示、優(yōu)惠券領(lǐng)取提示、簽到成功提示等等,需要的朋友可以參考下
    2023-11-11
  • 原生JS實(shí)現(xiàn)分享側(cè)邊欄

    原生JS實(shí)現(xiàn)分享側(cè)邊欄

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)分享側(cè)邊欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 我見過最全的個(gè)人js加解密功能頁面

    我見過最全的個(gè)人js加解密功能頁面

    利用js進(jìn)行加解密是我們經(jīng)常會(huì)遇到的一個(gè)功能,本文給大家介紹的是我目前見到的最全的個(gè)人js加解密功能頁面,分享出來供大家參考學(xué)習(xí),需要的朋友們隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2007-12-12
  • javascript實(shí)現(xiàn)簡約的頁面右下角點(diǎn)擊彈出窗口示例【測試可用】

    javascript實(shí)現(xiàn)簡約的頁面右下角點(diǎn)擊彈出窗口示例【測試可用】

    這篇文章主要介紹了javascript實(shí)現(xiàn)的頁面右下角點(diǎn)擊彈出窗口功能,結(jié)合實(shí)例形式詳細(xì)分析了javascript頁面右下角點(diǎn)擊彈出窗口功能的相關(guān)步驟、原理與注意事項(xiàng),需要的朋友可以參考下
    2023-07-07
  • 全系IE支持Bootstrap的解決方法

    全系IE支持Bootstrap的解決方法

    用了bootstrap模版搭建的網(wǎng)站,在IE7中打不開,在IE8中背景圖片都不顯示,內(nèi)容排列也出現(xiàn)問題,在IE9中表現(xiàn)的最好,在IE11中出現(xiàn)彈出層中的圖片無法顯示,那么這些兼容性怎么去解決
    2015-10-10
  • js中的preventDefault與stopPropagation詳解

    js中的preventDefault與stopPropagation詳解

    本篇文章主要是對js中的preventDefault與stopPropagation進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01

最新評論