<address id="xpjh9"><listing id="xpjh9"><meter id="xpjh9"></meter></listing></address>

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
<noframes id="xpjh9">
<noframes id="xpjh9">

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
    <form id="xpjh9"></form><address id="xpjh9"><listing id="xpjh9"><menuitem id="xpjh9"></menuitem></listing></address>

      <noframes id="xpjh9">
      VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
      SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
      當前位置:
      首頁 > 網站開發 > JQuery >
      • JavaScript教程之Array,prototype.concat.apply與[].conat.ap

      • 2019-04-27 15:28 來源:未知

       

       一直都知道JS數組Array內置對象有一個concat方法,但是也沒怎么研究過,今天偶然就看了看

        concat是連接一個或多個數組

       返回的是連接后數組的一個副本

      var oldArr=[];

      var arr=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]];

      var newArr=oldArr.conat(arr);

      console.log(newArr);

       

       

       

      console.log(oldArr);//[]  沒有改變

       

      于是乎 我又想到把數組的每一項都當成數組與oldArr連接

      這就需要apply方法了 將數組變成參數列表傳參

      console.log(Array.prototype.concat.apply(Array,arr));

      //結果很奇怪

      沒有得到想到的結果

       

       

       箭頭地方是什么鬼???

       想了想

       Array.prototype.concat.apply(Array,arr);

       不就是Array調用了Array.prototype上的concat然后傳入參數arr

      把Array 換成Number String 等 不就是 借用Array.prototype上的concat方法罷了

      然后把調用者添加到數組的0位置

      我感覺就是 arr.unshift(Array);

      其他情況的話就會 push 了

      看下面的圖就明白了吧

      console.log(Array.prototype.concat.apply(Number,arr));

       

      console.log(Array.prototype.concat.apply(String,arr));

       

      console.log(Array.prototype.concat.apply(RegExp,arr));

       

       好像是這么回事

      所以 把aplly里面的參數改成[]不就好了

      console.log(Array.prototype.concat.apply([],arr));

      可以簡單點寫[].concat.apply([],arr);

       

        數組不僅可以連接數組  數組還可以連接字符串  數字  對象  等

         console.log([].concat({a:2,b:3,c:3}));

       

       他會把對象放在數組里,這里就不能說連接了吧 我中有你嘛

      console.log([].concat("123"}));

       

      根據這些我總結出了  如果 concat傳入的參數不是數組 就不會遍歷 直接暴力添加到數組項

      而參數是數組的話就會遍歷

       

      需要注意的是  千萬不要傻傻的 用String.concat(); Number.concat()等

      上面的是用apply方法改變this指向借用的

      它本身沒有concat

      String.prototype里面有concat但是實現結果不一樣滴!

      只是我個人的理解 希望對大家有幫助

      相關教程
      江苏快3 霍邱 | 台北 | 靖江 | 柳州 | 吴忠 | 淮安 | 宿州 | 昌吉 | 三沙 | 湖北武汉 | 龙口 | 铜仁 | 哈密 | 迪庆 | 启东 | 保山 | 基隆 | 燕郊 | 郴州 | 钦州 | 嘉峪关 | 海宁 | 简阳 | 玉树 | 湖州 | 济南 | 吉林长春 | 赣州 | 黔南 | 怒江 | 南安 | 红河 | 七台河 | 宝鸡 | 吕梁 | 湘西 | 日照 | 汕头 | 宜昌 | 惠东 | 西藏拉萨 | 和县 | 辽源 | 镇江 | 武威 | 衡水 | 阿拉尔 | 滕州 | 三门峡 | 毕节 | 广元 | 灌南 | 四川成都 | 喀什 | 株洲 | 金坛 | 赣州 | 泗洪 | 南安 | 连云港 | 榆林 | 江西南昌 | 天水 | 汕头 | 宁德 | 南京 | 柳州 | 临猗 | 邢台 | 湖北武汉 | 白银 | 日喀则 | 嘉善 | 鄂州 | 抚州 | 大连 | 金华 | 楚雄 | 沧州 | 寿光 | 张家界 | 齐齐哈尔 | 辽源 | 日喀则 | 临猗 | 芜湖 | 四平 | 和田 | 仁寿 | 仙桃 | 怀化 | 新疆乌鲁木齐 | 吐鲁番 | 大庆 | 德宏 | 安康 | 广西南宁 | 喀什 | 乌兰察布 | 泰州 | 广西南宁 | 株洲 | 三亚 | 肇庆 | 黄石 | 明港 | 洛阳 | 黑河 | 曹县 | 云浮 | 迁安市 | 陕西西安 | 锦州 |