数组
我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从0开始)来访问,数组中的数据可以是任何的数据类型.数组本身仍旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别开来分别对待(Throughout this book, objects and arrays are often treated as distinct datatypes.This is a useful and reasonable simplification; you can treat objects and arrays as separate types for most of your JavaScript programming.To fully understand the behavior of objects and arrays, however, you have to know the truth: an array is nothing more than an object with a thin layer of extra functionality. You can see this with the typeof operator: applied to an array value, it returns
the string "object". --section7.5).
创建数组可以用"[]"操作符,或者是用Array()构造函数来new一个.
var array1 = []; //创建空数组
var array2 = new Array(); //创建空数组
array1 = [1,"s",[3,4],{"name1":"NAME1"}]; //
alert(array1[2][1]); //4 访问数组中的数组元素
alert(array1[3].name1); //NAME1 访问数组中的对象
alert(array1[8]); //undefined
array2 = [,,]; //没有数值填入只有逗号,则对应索引处的元素为undefined
alert(array2.length); //3
alert(array2[1]); //undefined
用new Array()来创建数组时,可以指定一个默认的大小,其中的值此时为undefined,以后可以再给他们赋值.但是由于javascript中的数组的长度是可以任意改变的,同时数组中的内容也是可以任意改变的,因此这个初始化的长度实际上对数组没有任何的约束力.对于一个数组,如果对超过它最大长度的索引赋值,则会改变数组的长度,同时会对没有赋值的索引处赋值undefined,看下面的例子.
var array = new Array(10);
alert(array.length); //10
alert(array[4]); //undefined
array[100] = "100th"; //这个操作会改变数组的长度,同时将10-99索引对应的值设为undefined
alert(array.length); //101
alert(array[87]); //undefined
可以用delete操作符删除数组的元素,注意这个删除仅仅是将数组在该位置的元素设为undefined,数组的长度并没有改变.我们已经使用过了数组的length属性,length属性是一个可以读/写的属性,也就是说我们可以通过改变数组的length属性来任意的改变数组的长度.如果将length设为小于数组长度的值,则原数组中索引大于length-1的值都会被删除.如果length的值大于原始数组的长度,则在它们之间的值设为undefined.
var array = new Array("n1","n2","n3","n4","n5"); //五个元素的数组
var astring = "";
for(var i=0; i<array.length; i++) { //循环数组元素
astring += array[i];
}
alert(astring); //n1n2n3n4n5
delete array[3]; //删除数组元素的值
alert(array.length + "_" + array[3]) //5_undefined
array.length = 3; //缩减数组的长度
alert(array[3]); //undefined
array.length = 8; //扩充数组的长度
alert(array[4]); //undefined
对于数组的其他方法诸如join/reverse等等,在这就不再一一举例.
通过上面的解释,我们已经知道,对象的属性值是通过属性的名字(字符串类型)来获取,而数组的元素是通过索引(整数型 0~~2**32-1)来得到值.数组本身也是一个对象,所以对象属性的操作也完全适合于数组.
var array = new Array("no1","no2");
array["po"] = "props1";
alert(array.length); //2
//对于数组来说,array[0]同array["0"]效果是一样的(?不确定,测试时如此)
alert(array[0] + "_" + array["1"] + "_" + array.po);//no1_no2_props1
可以把 array["po"]换成array["2"]或者array[2],还有array.po换成array.“2”和array.2,会发现很多的秘密。对数组是特殊的对象有更进一步的理解。
分享到:
相关推荐
JavaScript中的面向对象编程(Object-Oriented Programming, OOP)是一种设计模式,它允许开发者创建具有封装、继承和多态性的复杂结构。在JavaScript中,虽然没有像Java或C++那样的类关键字,但它通过函数和原型...
2. **基于原型**:JavaScript的面向对象机制主要是基于原型(prototype)的。每个函数都有一个内置的`prototype`属性,这个属性是一个对象,该对象的所有属性和方法都可以被实例对象继承。 3. **构造函数**:可以...
2. 对象共享性成员变量实验 JavaScript通过原型(prototype)机制,允许开发者为对象添加共享成员变量。这意味着,如果在原型上定义一个成员变量,那么所有通过这个原型创建的对象实例都将共享这个成员变量。 ```...
javascript面象对象设计经典例子
2. 原型:原型是JavaScript中实现继承的一种方式,允许对象共享属性和方法。通过`prototype`属性,我们可以为构造函数添加共享方法。 ```javascript Plane.prototype.shoot = function() { // 射击逻辑 }; ``` 3....
### JavaScript面向对象编程详解 #### 6.1 JavaScript中支持面向对象的基础 ##### 6.1.1 使用定义函数的方式定义类 在面向对象编程(OOP)中,“类”是核心概念之一,它代表着一类事物的抽象。在JavaScript中,可以...
在GIS领域,空间数据通常以几何对象(如点、线、面)的形式存在,而时间戳则与这些几何对象关联,记录了每个位置点的时间信息。在车辆轨迹中,每一条轨迹可以看作是一系列有序的地理坐标点,每个点都有对应的时间...
在这些场景中,"要素"通常指的是地图上的点、线和面对象,它们用于表示地理实体。本教程将深入探讨如何利用JavaScript实现这一功能。 首先,让我们了解“点”要素。在JavaScript中,一个点要素通常表示一个精确的...
HTMLTest(js面向对象),javascript也有面象对象的概念,有封装,有继承。事件模型
如果你想学习javascript面象对象编程,这个源代码可以让你学习学习。
2. 创建面对象:接着,我们需要构建Polygon对象来表示多边形。这通常涉及提供一个包含多个坐标对的数组,这些坐标对定义了多边形的边界。 ```javascript var polygonCoordinates = [[...], [...], ...]; // 多边形...
它包括了点(Point)、线(LineString)、面(Polygon)等几何类型,以及Feature对象,用于包含属性数据。GeoJSON的特点是结构清晰,易于解析,支持多种GIS操作。 2. **SuperMap .NET库** SuperMap是一个全面的GIS...
在本教程中,我们将深入探讨如何使用Leaflet和Turf.js来获取GeoJSON几何对象(如面)的中心点和质心。 首先,了解GeoJSON是一种开放的数据格式,常用于存储地理空间数据,包括点、线、面等多种类型。GeoJSON对象由...
### ArcGIS Server JavaScript API 实现点、线、面的 Buffer 分析 #### 一、概述 ArcGIS Server JavaScript API 是一款强大的工具集,允许开发者在 Web 应用程序中集成地理信息系统 (GIS) 功能。它支持多种 GIS ...
01_理解内存分配在正式开始之前,我想先说两句,理解javascript系列博文是通过带领大家分析javascript执行时的内存分配情况,来解释javascript原理,具体会涵盖javascript预加载,闭包原理,面象对象,执行模型,...
6. MultiPolygon:多面是一个面对象的数组,表示多个面域的位置。 7. GeometryCollection:几何集合是一个geometry对象的数组,表示多种几何体的集合。 Feature Objects 要素对象是GeoJSON对象的子集,包含一个...
而面对象(多边形)是由一系列线段(边)围成的闭合区域,可以代表地理上的区域,如行政区、湖泊、森林等。 在JavaScript中,我们可以利用库如Leaflet、OpenLayers或Mapbox GL JS来处理GIS相关的任务。这些库提供了...