您的位置:首页 > Web前端 > JavaScript

javascript对象与数组

2015-03-07 11:42 190 查看
第六章 JavaScript对象与数组

对象是JavaScript最基本的数据类型之一,是一种复合的数据类型,将多种数据类型集中在一个数据单元中。并允许通过对象名来存取这些数据的值。

对象使用运算符new来创建,在new之后必须有用于初始化对象的构造函数名,。

在建立新对象之前,需要通过构造其属性来定义对象,这一过程由定义函数名及其属性的函数来完成。

function Student(name,age,grade){

this.name=name;

this.age=age;

this.grade=grade;

}

利用该函数,可以用new语名来建立一个新的对象,student1=new Student(李明,16,3);

可以直接创建对象。如:

<!--对象创建与调用6.1.html-->

<html>

<head></head>

<body>

<script language="javascript">

<!--

var book=new Object();

book.title="book1";

book.chapter1=new Object();

book.chapter1.title="第一章";

book.chapter1.pages=25;

book.chapter2={title:"第二章",pages:30};

alert("输出结果:"+"\n\t\n\t"+book.title+"\n\t"+"chapter1:"+book.chapter1.title+"\n\t"+"chapter2:"+book.chapter2.title);

//-->

</script>

</body>

</html>

可以用delete语句来删除一个对象的属性。

6.1.2对象的方法

方法其实就是通过对象调用的JavaScript函数,可以将函数赋值给任何变量,甚至赋值给一个对象的任何属性,在方法的主体内部,关键词关键词this会变成调用该方法的对象,函数是存储在变量中的值,而这个变量也是全局对象的一个属性,因此,当调用一个函数,实际上是调用 的全局对象中的一个属性。

方法用来对this对象操作,函数通常是独立的并不需要使用this对象。

使用函数来定义和调用方法如:

<!--使用函数来定义和调用方法-->

<html>

<head>

<title></title>

</head>

<body>

<script language="javascript">

<!--

//首先定义一些函数,它们将被作为方法使用

function RectangleArea(){return this.width*this.height;}

function RectanglePerimeter(){return 2*this.width+2*this.height;}

function RectangleSetsize(w,h){this.width=w;this.height=h;}

function RectangleEnlarger(){this.width*=2;this.height*=2;}

function RectangleShrink(){this.width/=2;this.height/=2;}

function Rectangle(w,h){

this.width=w;

this.height=h;

this.area=RectangleArea;

this.perimeter=RectanglePerimeter;

this.setsize=RectangleSetsize;

this.enlarger=RectangleEnlarger;

this.shrink=RectangleShrink;}

var r=new Rectangle(2,2);

//在这里,r.area().加上括号是正确的,如果不加括号则返回函数代码。即function RectangleArea(){re//turn this.width*this.height;}

var a=r.area();

r.enlarger();

var p=r.perimeter();

alert(p);

//-->

</script>

</body>

</html>

像上面的例子一样,如果用构造函数把方法赋值给要初始化的对象,那么,类的每一个对象都会有一个相同的方法属性副本,执行效率低,在JavaScript中,可以使用一种更为有效的方式,常量以及能被类的所有对象共享的属性。

每一个对象都有一个原型对象,而且一个对象可以继承其原型对象的所有属性,要为一个对象的类指定原型对象,需要将构造函数的prototype属性设置为当的对象。此后,当用构造函数初始化一个新对象时,JavaScript自动将该对象作为新建对象的原型对象。

6.1.5 构造函数与this关键字

对象实例由new关键字来创建,而不是由方法创建,也就是说,构造方法不用返回任何结果,因此,在构造方法中不要有返回结果的return.

如:

<!--this关键字的使用6.2.html-->

<html>

<head>

</head>

<body>

<script language="javascript">

<!--

function Student(name,age,sex)

{

this.name=name;

this.age=age;

this.sex=sex;

this.out=outfunc;

}

function outfunc(){

document.write(this.name+":"+this.age+" "+this.sex+";");

}

var student1=new Student("李明",18,"男");

student1.out();

//-->

</script>

</body>

</html>

6.2JavaScript中的数组

由于JavaScript是一种无类型的语言,所以一个数组的元素可以具有任意的数据类型,同一数组的不同元素可以具有不同的类型,数组的元素甚至可以是其它的数组,这样就可以创建更为复杂的数据结构。

数组可以用构造函数Array()和运算符new来创建。

var a=new Array();

var a=new Array(5,4,3,2,1,"test","text");

var a=new Array(10);

另外,使用数组直接量可以直接将一个数组的值嵌入到JavaScript中,如同把字符串文本放入引号之间来定义字符串直接量一样,要创建数组直接量,只需将一个用逗号的值列表放入【】中,即可。

var primes=[2,3,5,6];

与其它语言不同,在javascript语言的数组可以具有任意个数的元素,可以在任何时候改变元素数量,要给一个数组添加新的元素,只需要给其赋值即可。

在JavaScript中,只有那些真正存储在数组中的元素才能分配到内存。

数组的length()属性。

如:

<!---数组的length属性-->

<html>

<head></head>

<body>

<script>

<!--

var a=new Array();

document.write("没有定义元素时的长度:"+a.length+"<p>");

a=new Array(10);

document.write("定义十个空元素的长度:"+a.length+"<p>");

a=new Array(1,2,3);

document.write("定义三个元素后的长度:"+a.length+"<p>");

a=[4,5];

document.write("定义元素0和1的长度是:"+a.length+"<p>");

a[5]=-1;

document.write("再定义元素5后的长度是:"+a.length+"<p>");

a[49]=0;

document.write("再定义元素49后的长度是"+a.length+"<p>");

//-->

</script>

</body>

</html>

数组元素遍历

在对数组元素进行遍历时,不能假定数组元素是连续的,而且 从0开始,那使用数组元素之前需要进行检测。看该元素是不是已经定义。

删除数组元素,通过设置数组的length属性来截断该数组,是唯一可以将数组中元素真正删除的方法,用 delete删除后,元素变成undefined但,length属性并不会改变。

用对象的方法实现数组。

Array对象及其属性与

join方法:将一个数组的所有元素转化为字符串,并把这些字符串连接起来,可以任意指定一个字符串来分割结果字符串中的元素。若没有指定,则使用逗号来分割。

reverse方法:颠倒数组元素的顺序。

sort方法:排序

alice方法:返回数组的一个子数组,带有两个参数,分别表示要返回的子数组的起止点。

splice方法:可以把元素从数组中删除,也可以向数组中插入元素。

如:

<!--splice方法-->

<html>

<head></head>

<body>

<script language="javascript">

<!--

var a=[1,2,3,4,5,6,7,8,9];

alert(a.splice(4,1)+"\n");

//-->

</script>

</body>

</html>

6.2.4作为关联数组的对象

JavaScript内部对象。

Object对象:提供了对象最基本的功能。这些功能构成了所有其他对象的基础,Object对象提供了创建自定义对象的简单方式。不需要再定义构造函数,可以在程序运行时对JavaScript对象随意添加属性。

String对象。是动态对象,需要创建该对象的实例,最常用的属性是length.indexof返回字符串在一个字符串对象中第一次出现 的位置。

正则表达式相关方法:

match方法:使用正则表达式对模式串搜索

replace方法:使用正则表达式对字符串搜索,并用指定的字符串替换搜索到的内容

search方法:返回搜索时第一个匹配的位置

字符串匹配与转换相方法:

slice:返回在一个字符串中两个指定位置之间的子字符串

substr:返回从指定位置开始,具有指定长度组成的字符串

toLowerCase

toUpperCase

6.3.3Date对象

Date对象的方法:如:

<!--Date对象的方法-->

<html>

<head></head>

<body>

<script language="javascript">

<!--

var currenttime=new Date();

var strdate=currenttime.getYear()+"年";

strdate+=currenttime.getMonth()+1+"月";

strdate+=currenttime.getDate()+"日";

strdate+=currenttime.getHours()+":";

strdate+=currenttime.getMinutes()+":";

strdate+=currenttime.getSeconds();

alert(strdate);

//-->

</script>

</body>

</html>

6.3.4 toString方法

所有内部对象的一个成员方法,作用是将对象中的数据转换成某种格式的字符串类型。

专门用于对象的语句

在JavaScript中,with与for in是专门用于对象的语句。

with语法如下:

with(对象名){

}

在一个连续的程序代码中,如果多次使用某个对象的属性和方法,就在with关键字之后的括号中写出该对象的名称,就可以在程序块中直接使用该对象的属性名和方法名。

for in语句

for(变量 in 对象){}

用于对某个对象的所有属性进行循环操作,将某个对象的所有属性名称依次赋值给不同的变量,而不需要知道对象属性的个数。

<!--6.24.html-->

<html>

<head>

<title></title>

<style></style>

<link type="text/css" rel="stylesheet" href="6.24.html">

</head>

<body>

<script language="javascript">

<!--

function Student(){

this.name="张华";

this.age="19";

this.height="172";

}

var attr=new Student();

var a,b,stru="";

for(a in attr){

stru+=a+" ";

stru+=attr[a]+" ";

}

alert(stru);

//-->

</script>

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: