arguments为一个类数组的对象;类数组对象即为:有length属性和索引的对象。
一、类数组===》数组
var arrObj = {0:"man",1:"20",length:2}; Array.prototype.slice.call(arrObj,0);//["man","20"]
注释:在arrObj中冒号前面的数字为下标;
slice将类数组对象转化为数组;
call(要转换的数组,开始的下标)
二、类数组===》对象
Array.prototytpe.splice.call(arrObj);//["man","20"] Array.from(arrObj);//["man","20"] Array.prototype.concat.apply([],arrObj);//["man","20"]
三、Arguments对象
Arguments只定义在函数体中,包括了函数参数和其他属性。在函数体中arguments代指Arguments对象。
1、属性1:length。在函数体中length为实参的长度。
2、属性2:callee。可以用该属性对函数自身的调用。
var data = []; for (var i = 0;i < 3;i++) { (data[i] = function ( ) { console.log(arguments.callee.i); }).i = i; } data[0]();//0 data[1]();//1 data[2]();//2
四、ES6将此、转化为数组
function fn (...arguments) { console.log(arguments);//[1,2,3] } fn(1,2,3);
网友评论