• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yantianqi
V2EX  ›  程序员

js 里面 push.apply 小问题

  •  
  •   yantianqi · Feb 16, 2017 · 2269 views
    This topic created in 3374 days ago, the information mentioned may be changed or developed.
    
    function SpecialArray() {
      var values = new Array();
    
      values.push.apply(values, arguments);//这句怎么理解
      console.log(this)
    
      values.toPipedString = function() {
        return this.join("|");
      };
      return values;
    }
    

    我想问一下其中 values.push.apply(values, arguments); 这一句该怎么理解

    5 replies    2017-02-17 01:28:57 +08:00
    haozhang
        1
    haozhang  
       Feb 16, 2017 via iPhone   ❤️ 1
    等价于 Array.prototype.push ,再去看看 apply 是干什么的就懂了
    lijsh
        2
    lijsh  
       Feb 16, 2017
    这段代码的目的是把 SpecialArray 的参数按原样一个个传进 values 数组,查查 apply 的具体用法吧。
    chairuosen
        3
    chairuosen  
       Feb 16, 2017
    为了把未知个数的参数透传给 push
    learnshare
        4
    learnshare  
       Feb 17, 2017 via Android
    主要研究一下 apply 的用法吧
    bombless
        5
    bombless  
       Feb 17, 2017 via Android   ❤️ 2
    就是把调用参数一个个 push 进去 values 呗。这种用法习惯了就好
    其实这也算是一个常见技巧,因为 arguments 不是一个 array 有点像 array ,这里就构造出一个 array 内容都是 arguments 那些内容,顺手还把产出的这个对象加了个方法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1042 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 22:35 · PVG 06:35 · LAX 15:35 · JFK 18:35
    ♥ Do have faith in what you're doing.