javascript面向对象技术基础(二)

开发 前端
好多JAVASCRIPT的文章,对于初学者来说,太深奥,难理解。本系列会从基础开始讲起,今天介绍第二篇,数组,一起来看。

看了很多介绍javascript面向对象技术的文章,很晕.为什么?不是因为写得不好,而是因为太深奥.javascript中的对象还没解释清楚怎么回事,一上来就直奔主题,类/继承/原型/私有变量。结果呢,看了大半天,有了一个大概的了解,细细一回味,好像什么都没懂。

这篇文章是参考<<javascript-the definitive guide,5th edition>>第7,8,9章而写成的,我也会尽量按照原书的结构来说明javascript的面向对象技术(对象/数组->函数-->类/构造函数/原型).对一些我自己也拿捏不准的地方,我会附上原文的英文语句,供大家参考.

如果不做说明,则文中出现的所有英文语句(程序体除外)都是引自<<javascript-the definitive guide,5th edition>>.

数组

我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从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一个.

Js代码

  1. var array1 = []; //创建空数组  
  2. var array2 = new Array(); //创建空数组  
  3. array1 = [1,"s",[3,4],{"name1":"NAME1"}]; //  
  4. alert(array1[2][1]); //4 访问数组中的数组元素  
  5. alert(array1[3].name1); //NAME1 访问数组中的对象  
  6. alert(array1[8]); //undefined  
  7. array2 = [,,]; //没有数值填入只有逗号,则对应索引处的元素为undefined  
  8. alert(array2.length); //3  
  9. alert(array2[1]); //undefined 

用new Array()来创建数组时,可以指定一个默认的大小,其中的值此时为undefined,以后可以再给他们赋值.但是由于javascript中的数组的长度是可以任意改变的,同时数组中的内容也是可以任意改变的.

因此这个初始化的长度实际上对数组没有任何的约束力.对于一个数组,如果对超过它***长度的索引赋值,则会改变数组的长度,同时会对没有赋值的索引处赋值undefined,看下面的例子.

Js代码
 

  1.  var array = new Array(10);  
  2. alert(array.length); //10  
  3. alert(array[4]); //undefined  
  4. array[100] = "100th"//这个操作会改变数组的长度,同时将10-99索引对应的值设为undefined  
  5. alert(array.length); //101  
  6. alert(array[87]); //undefined  

可以用delete操作符删除数组的元素,注意这个删除仅仅是将数组在该位置的元素设为undefined,数组的长度并没有改变.我们已经使用过了数组的length属性,length属性是一个可以读/写的属性,也就是说我们可以通过改变数组的length属性来任意的改变数组的长度.如果将length设为小于数组长度的值,则原数组中索引大于length-1的值都会被删除.如果length的值大于原始数组的长度,则在它们之间的值设为undefined.

Js代码

  1. var array = new Array("n1","n2","n3","n4","n5"); //五个元素的数组  
  2. var astring = "";  
  3. for(var i=0; i<array.length; i++) { //循环数组元素  
  4. astring += array[i];  
  5. }  
  6. alert(astring); //n1n2n3n4n5  
  7. delete array[3]; //删除数组元素的值  
  8. alert(array.length + "_" + array[3]) //5_undefined  
  9. array.length = 3; //缩减数组的长度  
  10. alert(array[3]); //undefined  
  11. array.length = 8; //扩充数组的长度  
  12. alert(array[4]); //undefined  

对于数组的其他方法诸如join/reverse等等,在这就不再一一举例.

通过上面的解释,我们已经知道,对象的属性值是通过属性的名字(字符串类型)来获取,而数组的元素是通过索引(整数型 0~~2**32-1)来得到值.数组本身也是一个对象,所以对象属性的操作也完全适合于数组.

【编辑推荐】

  1. javascript面向对象技术基础(一)
  2. Javascript中闭包的作用域链
  3. 让浏览器非阻塞加载javascript的几种方式
  4. Javascript解决浏览器兼容性问题

 

责任编辑:于铁 来源: iteye.com
相关推荐

2011-05-13 09:58:46

javascript

2011-05-13 11:27:59

javascript

2011-05-13 11:17:18

javascript

2011-05-13 12:38:58

javascript

2011-05-13 11:05:52

javascript

2011-05-25 10:59:26

Javascript继承

2009-06-10 22:06:29

JavaScript面向对象

2020-10-20 08:35:34

JS基础进阶

2017-04-21 09:07:39

JavaScript对象编程

2012-01-17 09:34:52

JavaScript

2013-08-21 17:20:49

.NET面向对象

2011-07-14 17:37:02

C++面向对象编程思想

2021-10-21 18:47:37

JavaScript面向对象

2012-02-27 09:30:22

JavaScript

2009-01-04 09:08:30

面向对象继承接口

2011-05-25 10:21:44

Javascript

2023-10-25 13:42:19

Java面向对象

2010-06-29 18:58:23

UML面向对象技术

2010-10-08 09:13:15

oop模式JavaScript

2010-06-18 17:49:34

UML面向对象技术
点赞
收藏

51CTO技术栈公众号