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>
原文地址:https://www.cnblogs.com/mrszhou/p/7754968.html