Array.prototype.slice.call(arguments)功能:将具有length属性的对象转成数组 //在IE8及之前的版本中无效 (因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)
如:
slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div id="father">
</div>
</body>
<script>
var father=document.getElementById('father');
for(var i=1;i<10;i++){
var p=document.createElement('p');
p.innerHTML=i;
father.appendChild(p);
}
var childNodes=father.childNodes;
// console.log(childNodes);
console.log(convertToArray(childNodes));
function convertToArray(nodes){
var array=null;
try{
<span style="color:#FF0000;">array=Array.prototype.slice.call(nodes,0);</span>
}
catch(ex){
<span style="color:#333399;"><strong>array=new Array();
for(var i=0,len=nodes.length;i<len;i++){
array.push(nodes[i]);
}</strong></span> //slice的内部实现
}
return array;
}
</script>
</html>
slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组。
再看call的用法,如下例子