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>
对象是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>
相关文章推荐
- javascript 对象数组根据对象object key的值排序
- Javascript 数组对象 操作
- JavaScript对象与数组参考大全
- JavaScript对象数组根据某属性sort升降序排序
- JavaScript中的对象和数组
- JavaScript 数组对象获得input输入框的值,并设置
- Javascript 排序数组或对象
- JavaScript Array(数组)对象
- PHP JavaScript横向总结、对比(2.数组,类(对象))
- Javascript之旅——第二站:对象和数组
- Javascript创建空对象和空数组的几个方法和差别
- javascript 数组和对象字符串
- JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)
- JavaScript对象与数组参考大全
- 2014年辛星完全解读Javascript第七节 数组和对象
- JavaScript对象和数组
- JavaScript数据类型,类,对象/数组区别
- JavaScript对象与数组参考大全 (转)
- javascript的数组和对象定义方式
- 05JavaScript数组对象