类数组对象是如何调用原生数组方法的?

苹果小萝卜
  • 5.1k
function obj(){
    var args=Array.prototype.slice.call(argumens);
    console.log(args);
}
obj("h","e","l","l","o");   //输出 ["h","e","l","l","o"];

arguments是函数内置的类数组对象。文章详见函数内置arguments

那么在obj函数内部的

arguments={
    0:"h",
    1:"e",
    2:"l",
    3:"l",
    4:"o",
    length:5
};

这里Array.prototype.slice.call(arguments)的内部是如何执行的才会输出["h","e","l","l","o"]的?

回复
阅读 5.7k
3 个回答
kikong
  • 19.1k
✓ 已被采纳
function slice(arrayObjects,start,end){
    var resultArray=[];
    var endIndex=end||arrayObjects.length-1;
    var startIndex=start;
    if(endIndex>=arrayObjects.length){
        endIndex=arrayObjects.length-1;
    }
    for(var i=startIndex;i<=endIndex;i++){
        resultArray.push(arrayObjects[i]);
    }

    return resultArray;
}

可通过call或者apply方法,对象冒充

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏