JavaScript--数组与伪数组(特殊对象)的区别
一.数组与伪数组的区别例子:
从原型链上解析:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <script> 7 window.onload = function{ 8 // 伪数组 --> __proto__:HTMLCollection 9 var btns = document.getElementsByTagName('button'); 10 console.log(btns); 11 console.log(typeof btns); // object 12 console.log(btns instanceof Array); // false 13 // btns.push("123"); 会报错,他不是真的数组,他的原型对象上没有数组的方法 14 15 16 // 数组--> __proto__:Array() 17 var arr = [1,2,3,4]; 18 console.log(arr); 19 console.log(typeof arr); //object 20 console.log(arr instanceof Array); // true 21 } 22 </script> 23 </head> 24 <body> 25 <button>按钮</button> 26 27 </body> 28 </html>
二.数组与伪数组(特殊对象)中,伪数组仿数组的过程
1 <script> 2 // 真数组 3 /*var arr = []; 4 arr[0] = "数据1"; 5 arr[1] = "数据2"; 6 console.log(arr);*/ 7 8 9 /* 伪数组其实是JS为了方便管理我们的DOM节点创建出来的特殊对象集合 10 * 11 *伪数组相当于对象的属性用了数组表示,JS内部还给它自动添加了length属性 12 * ,但是它本质还是伪数组(特殊对象),它身上没有数组方法*/ 13 var obj = {}; 14 // obj["key"] = "对象数据1"; 15 obj[0] = "对象数据1"; 16 obj[1] = "对象数据2"; 17 obj[2] = "对象数据3"; 18 obj['length'] = 3; 19 console.log(obj); 20 console.log("obj[0] ------"+obj[0]); 21 </script>