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 输出的结果如下

  • 相关阅读:
    VS2013 使用QCustomPlot等三方库如何配置
    error LNK1112:模块计算机类型"X64" 与目标计算机类型"X86" 冲突
    Qt 获取屏幕当前分辨率
    流程控制
    导航条和工作内容纪要
    js简介
    高度塌陷
    浮动
    文档流
    display和overflow
  • 原文地址:https://www.cnblogs.com/yalong/p/14293732.html
Copyright © 2011-2022 走看看