关于apply

rbg 2008-04-30
在EXT源代码的Menu类里,87行左右有如下代码
if(mis){
    this.add.apply(this, mis);
}
我就不太明白this.add.apply(this, mis);和this.add(mis);有什么区别。我自己做了如下替换
if(mis){
       this.add(mis);
    }
但是效果是不一样的
rbg 2008-05-04
明白了,用apply时,数组参数mis会自动打散为一个个的参数,如
mis=[1,2,3]
执行
this.add.apply(this, mis);
就相当于
this.add(1,2,3)

this.add(mis);
mis是作为一个参数传入
这两种情况下add函数里解析参数的方式就不一样了 this.add.apply(this, mis);
解析参数可以用arguments;
用this.add(mis);
可以用mis[0],mis[1]来解析参数
Global site tag (gtag.js) - Google Analytics