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

  • 相关阅读:
    Linux基础之计算机硬件
    python中 __cmp__
    python中 __str__和__repr__
    python的构造函数传入任意数量的参数
    python中的偏函数
    javascript正则表达式
    js实现复选框的全选、全部选和反选
    js中的函数对象
    js中的作用域
    js中的arguments
  • 原文地址:https://www.cnblogs.com/yalong/p/14293732.html
Copyright © 2011-2022 走看看