类数组对象是如何调用原生数组方法的?
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"]
的?
Answers
先看下我对 apply、call和bind这三个你可能感兴趣的理解,然后或许你就懂了你要问的了, http://www.cnblogs.com/skylor/p/4723612.html
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;
}