<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ~~~ /* * 回調函數:把一個函數A當做實參專遞給另外一個函數B,在B方法執行的時候,把A執行了,我們把這種機制叫做 “回調函數機制” * * 1.根據需求回調函數可以被執行N多次 * 2.不僅可以把回調函數執行,還可以給傳遞的回調函數傳遞實參,這樣在回調函數中設置形參(或者使用ARG)接收即可 * 3.還可以改變回調函數中的THIS指向 * 4.可以在宿主函數(它在哪執行的,它的宿主函數就是誰)中接收回調函數執行的返回結果 * ... */ // let fn = (callback) => { // //=>callback:傳遞進來的函數 // // callback && callback.call(obj, 100, 200); // //=>typeof callback==='function'?callback():null; // // let res = callback(10, 20); // console.log(res); // }; // fn((n, m) => { // //=>this:window 回調函數中一般THIS都是WINDOW,除非宿主函數執行回調函數的時候把THIS特殊指向了(箭頭函數除外:箭頭函數中的THIS是它上下文的) // // console.log(n, m); // return n + m; // }); //=>和內置的FOR-EACH類似(但是FOR-EACH只能遍歷數組),用來遍歷數組(類數組、對象)中的每一項的 //$.each(); // [12, 23, 34].forEach(function (item, index) { // console.log(item, index, this); // //=>this:window // }); // [12, 23, 34].forEach(function (item, index) { // console.log(item, index, this); // //=>this:'哈哈' // }, '哈哈');//=>FOR-EACH第二個參數是用來改變回調函數中THIS的 // $.each([12, 23, 34], function (index, item) { // console.log(item, index, this); // //=>this:當前遍歷的這一項(item) // }); // //=>OBJ:我們需要迭代的數組、類數組、對象 // let each = function (obj, callback) { // //=>驗證是數組(類數組)還是對象 // let flag = 'length' in obj;//=>我們先簡單驗證:有LENGTH是數組或者類數組,沒有是對象 // if (flag) { // for (let i = 0; i < obj.length; i++) { // let item = obj[i]; // let res = callback && callback.call(item, i, item);//=>接收回調函數的返回值,如果返回的是FALSE,我們結束循環即可 // if (res === false) { // break; // } // } // } else { // for (let key in obj) { // if (obj.hasOwnProperty(key)) { // let value = obj[key], // res = callback && callback.call(value, key, value); // if (res === false) { // break; // } // } // } // } // }; // each([12, 23, 34], function (index, item) { // //=>this:item // // console.log(index, item, this); // // return false;//=>如果回調函數返回FALSE,我們讓其代表:結束當前迭代 // console.log(item); // if (index >= 1) { // return false; // } // }); // each({name: 'xxx', age: 12, sex: 0}, function (key, value) { // console.log(key, value, this); // if (key === 'age') { // return false; // } // }); String.prototype.myReplace = function myReplace(reg, callback) { //=>this:str //=>默認REG肯定加G了,CALLBACK肯定傳遞函數了 let res = reg.exec(this), _this = this; while (res) { //=>res:每一次EXEC捕獲的結果(數組) let returnV = callback(...res);//=>捕獲一次執行一次回調函數,并且把通過EXEC捕獲的數組展開,每一項都依次傳遞給回調函數(returnV:當前回調函數執行的返回結果,我們要拿這個結果替換字符串中當前大正則匹配的內容) let v = res[0], i = _this.indexOf(v); _this = _this.substring(0, i) + returnV + _this.substring(v.length + i); res = reg.exec(this); } return _this; }; let str = 'my name is {0},i am {1} years old!', ary = ['周嘯天哈哈', '28']; str = str.myReplace(/\{(\d+)\}/g, function (...arg) { let index = arg[1]; return ary[index]; }); console.log(str); // 'my name is {0},i am {1} years old!' "周嘯天" // ['{0}','0',index:11] ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看