• HOME
  • DOCS
  • WTF
  • TECH
  • LIFE
  • PAGES
    • ARCHIVE
    • TAGS
    • ABOUT
    • FRIENDS
    • RSS
  • TOOLS
    • GEO
    • RANDOM()
    • GOO.GL
    • CSS HEART
Aj's Blog

记录时间溜走的瞬间和折腾过的那些事

javascript: 对象和数组
2010-12-14 @ TECH

尝试解释如下代码:

<script type="text/javascript"> 
var A = ["a","b","c"];
var B = {0:"a",1:"b",2:"c"};
var C = {a:"a",b:"b",c:"c"};
var D = [{a:"a",b:"b",c:"c"}];
var E = {a:["a","b","c"]};
var F = {a:[{a:[{a:"a"}],b:"b",c:"c"},"b","c"]};
alert("A: "+A[0] +"\r\nB: "+B[0] +"\r\nC: "+C.a +"\r\nD: "+D[0].a +"\r\nE: "+E.a[0] +"\r\nF: "+F.a[0].a[0].a);
</script>

javscript的对象是属性和方法的集合。方法就是函数,属性是一个值或一组值(以数组或对象的形式)。
javscript支持四种类型的对象:内部对象、自定义对象、宿主对象(如window 和document)、ActiveX 对象(外部组件)。

数组和对象的区别

1、length属性

在javscript 中,对象和数组几乎是以相同的方式处理的。数组只是一种特殊的对象。

对象和数组的子元素均可以被赋予任意值,数组和对象的区别在于数组有一个“奇妙的”length 属性,而对象没有。

var B= new Array(); 
B[0] = 0; 
alert(B.length);//值为1

var A = new Object();
A.Name = “笑而不语”;
alert(A.length); //值为undefined,对象没有length 属性

javscript中所有的对象均支持动态添加和删除属性。这些属性可以有包含数字的任意名称。

var A = new Object(); 
A.Name = "笑而不语";

var B= new Date(); //日期型对象,可以动态添加和删除属性并赋值
B.XXXX = “笑而不语”;

var C= new Array(); //数组对象,可以动态添加和删除属性并赋值
C.BGYT = “笑而不语”;

由于所有的数组也是对象,所以也支持动态添加和删除属性。

传统的作法是赋给数组元素以0开始的数字索引。

这些数组元素与length属性相交互。

虽然如此,数组对象的属性并不以任何方式影响数组的length。

var A= new Array(3); 
A[0] = 0; 
A[1] = 1; 
A[2] = 2; 
alert(A.length);  //长度为3
A.Name = "笑而不语"; 
alert(A.length);  //长度为3,不受上一句影响

2、数组中的数据没有“名称”(name),对象中的数据有“名称”(name)。

比如在javascript中,可以这样定义一个对象:

var a = new Object();
a.城市="北京";//定义一个名称为"城市"的子元素值为"北京"
a.面积=16800;
a.人口=1600;
alert(a.城市);

但是我们同样可以用一个数组来实现:

var a = new Array();//定义一个空数组,子元素为空
a.城市="北京"; //定义数组a的一个属性为"城市"并赋值"北京",子元素仍为空
a.面积=16800;
a.人口=1600;
alert(a.城市);
alert(a.length);//子元素为空,长度为0

但是结合前面说的就会发现。用数组方式实现的本质是在一个0长度的数据对象上扩展了属性。形象的理解为数组是存在外部的,而纯对象则是存在内部的。
什么时候用对象和数组?

前面说了数组和对象实际上可以同样实现我们数据存贮的功能,我们先看一个例子

var a=[1,2,3,4]
var b={0:1,1:2,2:3,3:4}
alert(a[0]+"/"+b[0]);

两种情况下的运行结果是相同的!

这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?

数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

对象是一种复合数据类型。

创建对象最简单的方法是你的javascript代码中包含对象直接量,也可以通过运算符new创建。

var empty = {}; // 一个空的对象
var point = { x:0, y:0 };
var homer = {
    "name": "Homer Simpson",
    "age": 34,
};
var a = new Array(); // 一个空的数组对象
var d = new Date(); // 一个时间型对象
var r = new RegExp("javascript", "i"); // 一个正则表达式对象
下一篇:   ChinaMode2010入围名单
上一篇:   科普:电鳗为什么会发电?它的电有多强?
暂无评论

Cancel reply