zoukankan      html  css  js  c++  java
  • 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 输出的结果如下

  • 相关阅读:
    Windows7与Window2008 64位IIS7上面DCOM配置Excel、Word
    C#连接SQLite的...方法
    VS2010版快捷键
    ajax 安装包下载
    Type InvokeMember()用法简介
    Lambda表达式
    多源最短路径算法
    单源点有权图的最短路径算法
    单源无权图的最短路径算法
    Tree Traversals Again
  • 原文地址:https://www.cnblogs.com/yalong/p/14293732.html
Copyright © 2011-2022 走看看