V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yantianqi
V2EX  ›  程序员

js 里面 push.apply 小问题

  •  
  •   yantianqi · 2017-02-16 21:26:34 +08:00 · 1909 次点击
    这是一个创建于 2839 天前的主题,其中的信息可能已经有所发展或是发生改变。
    
    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 条回复    2017-02-17 01:28:57 +08:00
    haozhang
        1
    haozhang  
       2017-02-16 21:36:12 +08:00 via iPhone   ❤️ 1
    等价于 Array.prototype.push ,再去看看 apply 是干什么的就懂了
    lijsh
        2
    lijsh  
       2017-02-16 21:40:44 +08:00
    这段代码的目的是把 SpecialArray 的参数按原样一个个传进 values 数组,查查 apply 的具体用法吧。
    chairuosen
        3
    chairuosen  
       2017-02-16 22:41:57 +08:00
    为了把未知个数的参数透传给 push
    learnshare
        4
    learnshare  
       2017-02-17 00:20:24 +08:00 via Android
    主要研究一下 apply 的用法吧
    bombless
        5
    bombless  
       2017-02-17 01:28:57 +08:00 via Android   ❤️ 2
    就是把调用参数一个个 push 进去 values 呗。这种用法习惯了就好
    其实这也算是一个常见技巧,因为 arguments 不是一个 array 有点像 array ,这里就构造出一个 array 内容都是 arguments 那些内容,顺手还把产出的这个对象加了个方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:23 · PVG 17:23 · LAX 01:23 · JFK 04:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.