JavaScript面向对象程序设计:数组

或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的。

1. 创建数组

在JavaScript中有很多创建数组的方法。比如使用Array函数。不过这不是现在我们要讲述的。现在我们使用简单的方括号“[]”的办法来创建数组。

Js代码

[javascript] view plaincopy

  1. 1.var objAyyar = []; // 1
  2. 2.var objAyyar = [2]; // 2
  3. 3.var objAyyar = ["a", "b", "c"]; // 3
  4. 4.var objAyyar = [new Date(), 123, "abc"]; // 4

    var a = "wedd  wd w ";
    a = a.replace(/\s/g,"");

这里有四个创建数组的语句。下面来一一解释一下:

第一句,创建一个空的数组;

第二句,创建一个数组,数组元素只有一个2;

第三句,创建一个数组,数组的元素分别初始化为"a", "b", "c";

第四句,创建一个数组,其中第一个元素为一个Date类型的对象,第二个元素是数字123,第三个元素是字符串"abc"。

回顾一下,在Java或者C++语言中,数组是具有相同的数据类型的元素的集合。比如使用Java语言的下面语句

Java代码

[java] view plaincopy

  1. int[] array = new int[10];

将创建一个能放入10个int类型的元素的数组。数组和其他类型的集合的一个很大的区别是,数组里面只能存放相同数据类型的元素(使用泛型的集 合除外)。但是,像上面的第四句,JavaScript的数组怎么能存放不同类型的元素呢?这是因为,JavaScript是弱类型的语言,没有很大的数 据类型的差别,所以数组的元素可以放入不同的类型。

2. 操作数组

数组是元素的有序集合。数组中的元素是有序的,这就可以通过下标访问到数组中的每个元素。而且,JavaScript的数组相当的灵活。当你习惯了 Java或者C++的数组之后,或许并不习惯JavaScript的数组。在一定程度上,这种数组可以称为一种动态数组。看这样一段代码。

Js代码

[javascript] view plaincopy

  1. var arr = [1, 2, 3, 4, 5];
  2. alert(arr.length); // 数组长度为5
  3. alert(arr[3]); // arr[3] = 4
  4. arr[9] = 10;    // 改变了数组的长度为10
  5. alert(arr[7]);
  6. alert(arr.length);

首先创建一个数组arr,可以看到它的长度是5,arr[3]是4。这些都是 很常见的。那么第三句,arr[9] = 10;就有点意思了——在Java中,这句操作将导致数组越界的异常,在C++中,这种操作是极其危险的。但是在JavaScript中,这样的操作是正 常的——你可以动态的改变数组的大小!虽然你在创建数组时并没有这么大的长度,但是,你可以在创建之后指定它!这时的arr.length已经自动的变成 10了。那么,arr[7]又会是什么呢?经过运行代码我们会看到,arr[7]是undefined。也就是说,虽然arr[9]有了值,但是其中从 arr[5]到arr[8]这几个元素都是未定义的,也就是undefined。如果你问JavaScript怎么不给个初始值?唉,饶了它 吧!JavaScript并不知道你想要它初始化成什么值啊!万一错了呢?干脆还是别了吧……
Js代码

[javascript] view plaincopy

  1. var arr = [1, 2, 3, 4, 5];
  2. alert(arr.length); // 数组长度为5
  3. delete arr[3]; // 删掉第4个元素
  4. alert(arr.length); // 长度不变
  5. alert(arr[3]); // arr[3] = undefined
  6. arr.length = 4; // 缩短长度
  7. alert(arr[4]);
  8. arr.length = 10; // 增加长度
  9. alert(arr[6]);
时间: 2024-11-06 13:24:22

JavaScript面向对象程序设计:数组的相关文章

JavaScript面向对象程序设计

理解对象 通用属性 configurable: 表示能否修改属性的特性或可以被删除 Enumerable:表示能否通过 for-in 循环遍历属性 data descriptor: Writable:表示能否修改属性的值 Value:包含这个属性的值 accessor descriptor get: 获取属性值 set: 设置属性值 备注:data descriptor和accessor descriptor 不能同时存在,如果同时存在会报[TypeError: property descrip

javascript面向对象程序设计——继承初步(by vczero)

上一篇说了javascript的封装,没有刻意去说javascript的“共有函数”.“私有函数”,因为个人觉得这只是作用域的问题,我们不能刻意的模仿强类型语言(C++/JAVA)而去编写代码.尊重每一门语言的特性才是最为重要的. 一.基于prototype原型的继承 1 var Person = function(name, age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 Person.prototype = { 7 addUser: f

JavaScript 面向对象程序设计(下)——继承与多态 【转】

JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论一下面向对象程序设计中的另外两个要素:继承与多态. 1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系. 1.1 定义和赋值 变量定义是指用 var a;

javascript面向对象程序设计——封装(by vczero)

在javascript中,我们宣称是面向对象的程序设计.其实面向对象是js与生俱来的特性,每一门OOP语言都有自己的特性,我们不能为了OOP,去模仿另一门语言,把握语言的特性才是正道.我们可以通过new Object()来创建一个实例,但是不推荐这种形式,我们需要更为直观的数据封装. 一.封装你的数据特性 1 var user = { 2 name: '', 3 email: '' 4 }; 很简单,我们封装了一个JSON格式的对象,也称为字面量对象:User对象包含两个属性name和email

javascript面向对象程序设计系列(一)---创建对象

javascript是一种基于对象的语言,但它没有类的概念,所以又和实际面向对象的语言有区别,面向对象是javascript中的难点之一.现在就我所理解的总结一下,便于以后复习: 一.创建对象 1.创建自定义对象最简单的方式就是创建Object的实例,并在为其添加属性和方法,如下所示: var cat = new Object(); //以猫咪为对象,添加两个属性分别为猫咪姓名和猫咪花色,并添加一个方法,说出猫咪的姓名 cat.name = "cc"; cat.color = &quo

javascript——面向对象程序设计(2)

1 <script type="text/javascript"> 2 //1.理解原型对象 3 //2.原型与in操作符 4 //3.更简单的原型语法 5 //4.原型的动态性 6 //5.原生对象原型 7 //6.原型对象的问题 8 9 //1.无论什么时候,只要创建了一个函数,就会根据一组特定的规则,为该函数创建一个prototype属性,该属性指向函数的原型对象 10 //在默认情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性包

javascript——面向对象程序设计(3)

1 <script type="text/javascript"> 2 //1.结合使用构造函数模式和原型模式 3 //2.动态原型模式 4 //3.计生构造函数模式 5 6 //创建自定义类型的常见方式就是组合使用构造函数模式和原型模式.构造函数模式用于定义是实例属性,而原型模式用于定义 7 //实例属性,而原型用于定义方法和共享的属性.结果,每个实例都会有自己的副本,但同时又共享着对方法的引用,节省内存. 8 9 function Person(name, age, j

javascript——面向对象程序设计(1)

1 <script type="text/javascript"> 2 //ECMA-262把对象定义为:“无序属性的 集合,其属性可以包含基本值.对象或者函数” 3 //理解对象,最简单的方式就是通过创建一个Object的实例,然后为它添加属性和方法 4 var person = new Object(); 5 person.name = "Xulei"; 6 person.age = "23"; 7 person.job = &q

javascript——面向对象程序设计(4)

1 <script type="text/javascript"> 2 //1.继承 3 //2.原型链 4 //3.借用构造函数 5 //4.组合继承 6 //5.原型式继承 7 //6.寄生式继承 8 9 //1.继承是OO中最让人津津乐道的概念.许多OO语言都支持两种继承方式:接口继承和实现继承. 10 //接口继承只支持方法签名,而实现继承则继承实际的方法. 11 //由于函数没有签名,所以在ECMAScript中无法实现接口继承,只支持实现继承,而且其实现继承主要