关于JS函数的多参数处理
Contents
关于JS函数的多参数处理
我们先来看个例子(提供:Mephisto)
|
|
当初为了理解这个函数,我写了一个例子1234567function fun1(){ return arguments}function fun2(){ return Array.prototype.slice.call(arguments)}
方便起见,写两个例子
|
|
重头戏开始!
当我传入相同参数的时候,发生了这样的现象:
|
|
靠,那为啥不直接使用arguments呢,不理解
随即测试12typeof ins1() //"object"typeof ins2() //"object"
这自然,数组本身也是对象
略微思考了一会,然后测试12ins1() instanceof Array //falseins2() instanceof Array //true
到这里我马上明白,经过Array.prototype.slice.call处理带有length属性的对象之后,会返回一个数组的实例,这样就可以调用原本没有的Array的方法了,类似的String.prototype.slice.call同理。
另外,就上面最初的那个函数而言,使用arguments也没问题,大丈夫萌大奶。
BTW,Function.prototype.call方法理解起来实在太抽象,实质是改变this指向的对象,我每次看到都会慌慌的,dokidoki。