求大佬详细说下下面代码的运行机制。
(这让我想到了好像以前就是利用apply来实现es6里面的...运算符?)
// `b` onto `a`:
a.push.apply( a, b );
a; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]
// or `a` into `b`:
b.unshift.apply( b, a );
b; // [1,2,3,4,5,6,7,8,9,"foo","bar","baz","bam","bun","fun"]
看apply的文档;
所以
实质上会将b中三个元素
4,5,6
当作a.push的参数,这里的a不是apply左边的a,而是传给apply的第一个参数。换句话说,apply会将第二个类数组参数拆分成一个个单独项。而与之对应的有个call方法。
虽然支持超过2个参数,但需要将参数都列出来,在数组操作上比apply要弱上许多。