js 七種方法實現把 arguments 轉為數組


文章原文:https://www.cnblogs.com/yalong/p/14293732.html

代碼如下,注意事項以及說明都在寫在代碼注釋里了:

 // 這個是給 for in 搗亂的,for in 的潛在危險就在此
  Object.prototype.name = '我是來搗亂的'
  
  function forInToArr (arg){
    let arr = []
    // 直接用下面這個 for in 會把原型鏈上的屬性也遍歷了,這樣輸出的結果就是 [11, 22, 33, 44, '我是來搗亂的']
    // for (let key in arg) {
    //   arr.push(arg[key])
    // }
    Object.keys(arg).forEach(item => {
      arr.push(arg[item])
    })
    return arr
  }

  function forOfToArr (arg){
    let arr = []
    for (let value of arg) {
      arr.push(value)
    }
    return arr
  }

  function test () {
    console.log('下面這個是arguments 原本的樣子:')
    console.log(arguments)
    console.log(typeof arguments) // 這里輸出 object 所以可以用 for of 進行遍歷
    console.log('下面這些是轉為數組后的樣子:')
    // 方法一
    console.log(Array.prototype.slice.call(arguments))
    // 方法二
    console.log([].slice.call(arguments))
    // 方法三
    console.log(Array.from(arguments))
     // 方法四
    console.log([...arguments])
     // 方法五
    console.log(forInToArr(arguments))
     // 方法六
    console.log(forOfToArr(arguments))
  }

  // 這個是 剩余運算符 rest
  function test2 (...args) {
     // 方法七
    console.log(args)
  }

  test(11, 22, 33, 44)
  test2(11, 22, 33, 44)

console 輸出的結果如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM