Tricks

`

Posted by Chaoran on March 27, 2018

“To be is to be perceived. ”

argument

—为什么要用 shift.call之类的方法实现array.shift

因为arguments是一个类数组对象,虽然他也有下标,但并非真正的数组,所以他不能和数组一样进行排序添加之类的操作,这种情况下 借用array.prototype对象上的方法,可以对arguments完成push,shift等操作,array.prototypr.slice()就可以吧arguments转换成真正的数组

function(a,b,c){ 
    [].slice.call( arguments ) // 转化为数组
    
    // 取第一个参数
    [].shift.call(arguments) 
    Array.prototype.shift.call(arguments) //or
}