艾利百科--临沂网站制作,临沂网页设计,临沂微信公众号,兼容并蓄,开放共赢!

艾利百科

当前位置: 主页 > 网站制作 > jQuery/JS >

JavaScript中对象和数组的区别

时间:2018-09-21 21:06来源:未知 作者:kunbeatable 点击:
数组和对象的区别: 创建数组和对象 var arr = [ 11 , 22 , 33 , 44 , 55 ]; v ar obj = { attr1 : 01 , attr2 : 02 , attr3 : 03 , attr4 : 04 , attr5 : 05 } 对象没有长度 // 对象没有长度 console .dir(arr.length); // 5 console .dir(obj.length); //
数组和对象的区别:

  • 创建数组和对象
var arr = [11,22,33,44,55];
var obj = { attr1:'01', attr2:'02', attr3:'03', attr4:'04', attr5:'05' }
  • 对象没有长度
  // 对象没有长度 
    console.dir(arr.length);   // 5
    console.dir(obj.length);   // undefined
  • 调用方法不同
    console.dir(arr[1]);
    console.dir(obj.attr1);
  • 因为没有长度,对象不能有for循环
  for (var i = 0; i <arr.length; i++) {
    console.dir(arr[i]);
  }
  • 对象键值唯一,数组可以重复
  var arr = [11,11,33,44,55];
  var obj = {
        attr1:'01',
        attr2:'02',
        attr3:'03',
        attr4:'04',
        attr5:'05',
        attr1:"00"
    }
    console.dir(obj);
    console.dir(arr);
  • 数组和对象都可以使用for...in 循环
   for(var attr in obj){
    console.dir(attr);  // 属性
    console.dir(obj[attr]);  // 值
   }
   for(var index in arr){
    console.dir(index);  // 属性
    console.dir(arr[index]);  // 值
   }

区别数组和对象的三种方法:

第一种方法  利用constructor  
控制台打印:[].constructor  -----> f Array(){[native code]}        
var obj = {}   
控制台打印  obj.constructor ----->f Object(){[native code]}        

第二种方法  利用 instanceof         
[] instanceof Array  ----->true        
var obj = {}; obj instanceof Object ----> true        

第三种方法  利用toString        
Object.prototype.toString.call([]);   -----> [object Array]        
Object.prototype.toString.call({});   -----> [object object]        
Object.prototype.toString.call(123);  -----> [object Number] 

注意:constructor 和 instanceof 在跨父子域的时候会判断错误,有bug。(比如  子页面里面的数组[]  instanceof   父页面的  Array   ------>会打印false)


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片