<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ~~~ /* function unique(ary) { /!* * ary = AAAFFF000 *!/ var obj = {}; for (var i = 0; i < ary.length; i++) { var item = ary[i]; if (obj.hasOwnProperty(item)) { /!* * 優化方案一: * 不使用SPLICE刪除(刪除當前項,后面索引移動位置, * 如果后面有很多項,導致性能消耗較大) * 解決:把最后一項替換當前項, * 在把最后一項刪除即可(會改變原有數組的順序) *!/ ary[i] = ary[ary.length - 1]; ary.pop(); i--; continue; } obj[item] = item; } obj = null;//=>優化二:OBJ沒用后我們手動釋放一下,節約內存 return ary;//=>AAAFFF000 } var ary = [1, 2, 3, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1, 1, 3]; var res = unique(ary);//=>AAAFFF000 銷毀的, 如果內部創建一個引用類型的,再返回時不銷毀的 */ var ary = [12, 13, 23, 13, 12, 14, 12, 12, 14, 15]; //=>為啥ARY.SORT可以執行:因為SORT是ARRAY.PROTOTYPE上內 置的屬性方法,而ARY是它的一個實例,可以基于__PROTO__找到原型上 的這個方法,然后調取使用 /*ary.sort(function (a, b) { return a - b; });*/ /* * 基于內置類的原型擴展方法,供它的實例調取使用 * 1.我們增加的方法最好設置“my”前綴(前綴是啥自己定), * 防止把內置方法重寫 */ /* Array.prototype.myUnique = function myUnique() { //=>方法中的THIS一般都是當前類的實例(也就是我們要操作的數組) //=>操作THIS相當于操作ARY,方法執行完成會改變原有數組 var obj = {}; for (var i = 0; i < this.length; i++) { var item = this[i]; obj.hasOwnProperty(item) ? (this[i] = this[this.length - 1], this.length--, i--) : obj[item] = item; } obj = null; }; ary.myUnique();//=>this:ary 此時方法執行完成的返回值 是undefined(原有數組改變) console.log(ary); // ary.__proto__.myUnique();//=>this:ary.__proto__ (IE瀏覽器中屏蔽了我們對__proto__的操作) // Array.prototype.myUnique();//=>this:Array.prototype 這種方式也很少用*/ //=>執行SORT返回排序后的數組(也是ARRAY的一個實例), 執行REVERSE返回的也是一個數組, 執行POP返回的是刪除的那一項(不是數組) //=>JS中的鏈式寫法:保證每一個方法執行返回的結果依然是 當前類的實例,這樣就可以繼續調取方法使用了 /*ary.sort(function(a,b){ return a-b; }).reverse().pop();*/ // ary.sort(function(a,b){ // return a-b; // }).reverse().slice(2,7).join('+').split('+').toString().substr(2).toUpperCase(); Array.prototype.myUnique = function myUnique() { var obj = {}; for (var i = 0; i < this.length; i++) { var item = this[i]; obj.hasOwnProperty(item) ? (this[i] = this[this.length - 1], this.length--, i--) : obj[item] = item; } obj = null; return this; }; var max = ary.myUnique().sort(function (a, b) { return a - b; }).pop(); //=>思考題: ~function (pro) { pro.plus = function plus(val) { return this + Number(val); }; pro.minus = function minus(val) { return this - Number(val); }; }(Number.prototype); var n = 5; var res = n.plus(3).minus(2);//=>res=6 console.log(res); ~~~
                  <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>

                              哎呀哎呀视频在线观看