资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级 by wulibing,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级 by wulibing,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级 by wulibing,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,第七章,JavaScript,脚本编程,1/87,内容提要,JavaScript,概述,词法规则,基本数据类型,运算符和表示式,关键语句,函数,复合数据类型,对象模型,事件处理,2/87,JavaScript概述,JavaScript,是由,Netscape,和,Sun,企业联合开发基于对象和事件驱动客户端脚本编程语言,经过它与,HTML,、,XML,、,DOM,、,CSS,、,JavaApplet,等技术有机结合,能够开发出含有很强交互性动态页面。,3/87,第一个,JavaScript,程序,实时显示时间,4/87,基于对象,事件驱动,解释性语言,简单性,实时性,跨平台性,安全性,JavaScript,特点,5/87,JavaScript,脚本引入方法,经过,与,标签对引入。将,JavaScript,脚本代码放在,与,之间,浏览器自动识别该标签对并逐行解释其间代码。,经过,标签,src,属性引入。将包含在,与,标签对之间代码放入扩展名为,.js,脚本文件中,然后在,HTML,文档中经过,标签,src,属性来引用该脚本文件。,在网页中嵌入,JavaScript,脚本,6/87,JavaScript,脚本引入方法,经过,JavaScript,伪协议引入。伪协议是非标准化通信机制统称,,JavaScript,伪协议普通格式为:,javascript:URL,。其中“,javascript:”,是伪协议说明符,,URL,主体能够是任意,JavaScript,代码,多个语句之间使用分号进行分隔。,比如:,在网页中嵌入,JavaScript,脚本,7/87,JavaScript,脚本引入方法,经过,HTML,事件属性引入。,HTML,元素事件属性用于指示怎样处理特定事件,方法是将脚本指定为事件属性值,以响应系统或用户动作。事件属性名称由事件名称加一个“,on”,前缀组成,如,onClick,,,onMouseOver,等。,比如:,在网页中嵌入,JavaScript,脚本,8/87,嵌入,JavaScript,脚本位置,JavaScript,脚本可放在,HTML,文档中任何需要位置。普通来说,能够在,与,标签对、,与,标签对之间放置,JavaScript,脚本代码。放置在,与,标签对之间,JavaScript,脚本普通用于提前载入,以响应用户页面动作,且普通不影响,HTML,文档浏览器显示格局。假如需要在页面载入时动态生成页面内容,应将,JavaScript,脚本放置在,与,标签对之间。,在网页中嵌入,JavaScript,脚本,9/87,标识符,在,JavaScript,中,标识符用来命名变量和函数。,标识符第一个字符必须是字母、下划线或美元符号,后续字符能够是字母、数字、下划线或美元符号。比如:,x,、,user_name,、,U571,、,_pswd,、,$money,都是正当标识符。,不能使用,JavaScript,中关键字作为标识符。在,JavaScript,中定义了,20,多个关键字,这些关键字是,JavaScript,内部使用,如,var,、,for,、,function,、,if,等,它们都不能作为标识符使用。,词法规则,10/87,词法规则,关键字和保留字,关键字是,JavaScript,语法本身一部分,含有特殊意义,不能用作标识符。,保留字是为未来关键字而保留单词,因为未来浏览器可能会实现这些保留字,所以它们最好也不要作为标识符使用。,break,case,catch,continue,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with,JavaScript,保留字,11/87,词法规则,大小写敏感,JavaScript,是一个区分大小写脚本语言。在输入关键字、变量名、函数名以及其它全部标识符时,都必须采取一致字符大小写形式。比如,“,username”,、“,userName”,、“,UserName”,代表三个不一样变量名。,许多,JavaScript,对象属性和它们所代表,HTML,标签属性同名,在,HTML,中这些标签属性能够以任意大小写方式输入,不过在,JavaScript,中它们通常都有固定大小写格式。比如,,body,标签背景颜色属性能够申明为“,bgcolor”,、“,bgColor”,或者“,BGCOLOR”,,但代表,body,标签,document,对象背景颜色属性只能申明为“,bgColor”,。,12/87,词法规则,空白字符,空白字符包含空格、制表符和换行符等,在编写脚本时占据一定空间,以增强代码可读性,方便开发人员查看和维护。,空格是使用最为频繁空白字符,常被用作分隔符。,例,1,:,sum =3 +10 ;,sum=3+10;,空格被忽略,例,2,:,var x=typeof JavaScript;,空格作为分隔符,13/87,词法规则,语句结束符,JavaScript,使用分号作为语句结束符,多个语句可写在不一样行或同一行。,比如:,var str=Welcome to JavaScript World!;,document.write(str);,也可写成:,var str=Welcome to JavaScript World!;document.write(str);,语句分行后,作为语句结束符分号能够省略。,比如:,var str=Welcome to JavaScript World!,document.write(str),注意:省略分号不是一个好编程习惯,它可能造成程序产生一个不明确状态。,14/87,词法规则,注释,JavaScript,有单行注释和多行注释两种形式。,单行注释以“,/”,开头,处于“,/”,和一行结尾之间任何文本都被看成注释而被浏览器忽略掉。,多行注释以“,/*”,开头,以“*,/”,结尾,处于“,/*”,和“*,/”,之间文本被看成注释,这些文本能够跨越多行,不过其中不能有嵌套注释。,比如:,/,这是单行注释,/*,*,这是多行注释,*它是多行,*它是多行,*,/,15/87,基本数据类型,基本数据类型定义了一组不可再分值集合,以,及作用于该集合上操作集。,JavaScript,支持基本数据类型包含数值型、字符串型和布尔型,分别对应于不一样存放空间。,基本数据类型和常量,当某种基本类型数据项直接出现在程序中时,称之为常,量,即值不能被改变量。,数值型:最基本数据类型,包含整型和浮点型,整型常量:能够使用十进制、八进制或十六进制表示,如,1234,、,0745,、,0 x93C,等。,浮点型常量:能够使用小数或指数方法表示,如,12.34,、,5.9e7,、,4.3e-5,等。,特殊数值型常量:,Infinity,表示正无穷大,,-Infinity,表示负无穷大,,NaN,表示“不是一个数值”、“没有意义运算”或“无法转换成数值类型”。如,5/0,运算结果为,Infinity,,,-5/0,运算结果为,-Infinity,,,0/0,运算结果为,NaN,。,16/87,基本数据类型,基本数据类型和常量,字符串型:表示文本数据类型,字符串常量:用,或,括起来若干个字符,如,JavaScript,、,This is a book of C+,等。,转义字符:以反斜杠,开头含有特殊功效字符。,转义字符,功效说明,b,退格,f,换页,n,换行,r,回车,t,制表,单引号,双引号,反斜线,XXX,ASCII字符,每一个大X是一个八进制数值,整个八进制数范围是0377。比如:101表示A,xXX,ASCII字符,每一个大X是一个十六进制数值,整个十六进制数范围是00FF。比如:x65表示e,uXXXX,Unicode字符,每一个大X是一个十六进制数值。比如:u000A表示换行,和n结果一样,17/87,基本数据类型,基本数据类型和常量,布尔型:表示状态数据类型,布尔常量:只有两个可能值true和false,表示“真”和“假”两种状态,。如,53,运算结果为,true,,,“,Chinese,”,“,China”,运算结果是,false,。,变量,变量是存放常量容器,主要作用是存取数据。,变量申明:在,JavaScript,中,能够先经过关键字,var,来申明变量,然后再使用。,比如:,var num;,var str,flag;,num=100;,str=JavaScript Language;,flag=true;,18/87,变量初始化:变量能够在申明同时指定初始值。,比如:,var num=100;,var str=JavaScript Language,flag=true;,仅用,var,申明但未初始化变量取得默认初值,undefined,。,变量类型,实际类型视变量内容而定。比如,上例中,num,为数值型变量,,str,为字符串型变量,,flag,为布尔型变量。,变量类型能够依据变量内容改变而自动更改。,比如:,var num=1;/num,为数值型变量,num=Hello World!;/num,为字符串型变量,变量能够不经过,var,申明就直接使用,而在变量赋值时自动申明该变量。,比如:,num=100;,str=JavaScript Language;,flag=true;,好编程格调:全部变量在第一次使用前都用,var,进行申明!,基本数据类型,19/87,运算符和表示式,运算符是完成操作一系列符号,,JavaScript,支持运算符包含算术运算符、比较运算符、逻辑运算符等。,表示式是由变量、常量和运算符连接起来式子,依据运算符类型不一样,表示式可分为算术表示式、比较表示式、逻辑表示式等。,算术运算符和算术表示式,算术运算符,算术表示式,运算结果,简明说明,+,6+15,21,将两个数据相加,-,9-7,2,将两个数据相减,*,4*8,32,将两个数据相乘,/,17/5,3.4,将两个数据相除,%,13%6,1,取两个数据相除余数,+,x+,变量x原值加1,将变量值加,1,-,-y,变量y原值减1,将变量值减,1,20/87,运算符和表示式,比较运算符和比较表示式,当操作数类型不一样时进行类型转换,当操作数类型不一样时不进行类型转换,比较运算符,比较表示式,运算结果,简明说明,-6,ChinaChinese,false,大于,=,true=,12=12,true,大于或等于,=,false=0,true,等于,!=,x!=x,false,不等于,=,true=1,false,恒等于,!=,!=,true,恒不等于,21/87,运算符和表示式,逻辑运算符和逻辑表示式,逻辑运算符,逻辑表示式,运算结果,简明说明,!,!false,true,逻辑非,操作数为假则结果为真,不然结果为假,&,75&8=6,false,逻辑与,操作数全为真则结果为真,不然结果为假,|,2=2|true=1,true,逻辑或,操作数全为假则结果为假,不然结果为真,22/87,运算符和表示式,位运算符和位表示式,位运算符,位表示式,运算结果,简明说明,&,5&6,4,按位与,若两操作数对应二进制位都是1,则结果位为1,不然为0,|,9|3,11,按位或,若两操作数对应二进制位都是0,则结果位为0,不然为1,74,3,按位异或,若两操作数对应二进制位相反,则结果位为1,不然为0,0,-1,按位非,若操作数对应二进制位为0,则结果位为1,不然为0,16,-323,-4,算术右移,左侧操作数二进制位向右移动由右侧数值表示位数,左边空位补符号,-323,536870908,逻辑右移,左侧操作数二进制位向右移动由右侧数值表示位数,左边空位补0,23/87,运算符和表示式,赋值运算符和赋值表示式,赋值运算符,赋值表示式,等价形式,简明说明,=,x=y+z,x=(y+z),赋值,+=,x+=y+z,x=x+(y+z),相加后赋值,-=,x-=y+z,x=x-(y+z),相减后赋值,*=,x*=y+z,x=x*(y+z),相乘后赋值,/=,x/=y+z,x=x/(y+z),相除后赋值,%=,x%=y+z,x=x%(y+z),取余后赋值,&=,x&=y+z,x=x&(y+z),按位与后赋值,|=,x|=y+z,x=x|(y+z),按位或后赋值,=,x=y+z,x=x(y+z),按位异或后赋值,=,x=y+z,x=x=,x=y+z,x=x(y+z),算术右移后赋值,=,x=y+z,x=x(y+z),逻辑右移后赋值,24/87,条件运算符和条件表示式,条件运算符有,3,个操作数,普通格式以下:,条件式,?valueB:valueC,当条件式成立时,,valueB,会被赋给整个条件表示式,不然将,valueC,赋给条件表示式。,比如:,var min=67?6:7;,思索:假设,x,、,y,、,z,三个变量均已赋值,请写出求三个变量中最大值和最小值条件表示式。,运算符和表示式,25/87,字符串运算符和字符串表示式,字符串运算符,说明,例子,+,连接两个字符串,var strA=Java;var strB=Script;,str=strA+strB;,str值是JavaScript,+=,连接两个字符串,然后赋值,var strA=Hello;var strB=World;,strA+=strB;,strA值是Hello World,运算符和表示式,26/87,逗号运算符和逗号表示式,逗号既能够作为分隔符,也能够作为运算符。逗号表示式普通格式以下:,表示式,1,表示式,2,表示式,n,逗号表示式求值过程:先求表示式,1,值,再求表示式,2,值,依次下去,最终求表示式,n,值,表示式,n,值即为整个逗号表示式值。,比如:,var a=2,b=4,c=6,x,y;/,逗号作为分隔符,y=(x=a+b,x+c);/,逗号作为运算符,运算符和表示式,27/87,基本控制结构,基本控制结构用来决定程序处理流程,,JavaScript,支持三种结构:次序、选择和循环。,关键语句,开始,语句,1,语句,2,结束,次序结构,28/87,分支结构,单分支选择和双分支选择结构,语句,1,语句,2,结束,开始,逻辑条件,true,false,开始,逻辑条件,true,false,语句,1,结束,29/87,多分支结构,false,条件,1,语句,1,true,false,开始,语句,2,true,条件,2,false,条件,3,语句,3,true,条件,n,false,语句,n,true,语句,n+1,结束,多分支选择结构,30/87,循环结构,循环结构,当型循环,开始,逻辑条件,true,false,循环体,结束,直到型循环,开始,逻辑条件,true,false,循环体,结束,31/87,表示式和复合语句,由各种类型表示式加上分号组成语句被称为表示式语句。,比如:,sum+;/,算术表示式语句,str=Olympic+;/,赋值表示式语句,用大括号“,”,括起来语句序列称为复合语句,用来在需要使用单行语句地方完成多项任务。,比如:,var angle=Math.PI;,var cosine=Math.cos(angle);,alert(cos(+angle+)=+cosine);,关键语句,32/87,条件语句,选择结构关键语句是条件语句,经过判断某个逻,辑条件是否成立,从给定各种可能操作中选择一,种执行。条件语句包含,if,语句和,switch,语句。,if,语句三种形式,单分支选择。其普通格式以下:,if(,表示式,),语句,;,功效:计算表示式值,若计算结果为,true,,执行语句;不然跳过,if,语句执行其后语句。,例,1,:,if(count 10),count=0;,例,2,:,if(count 10),count=0;,alert(,count,被重设为,0!,);,关键语句,33/87,双分支选择。其普通格式以下:,if(,表示式,),语句,1;,else,语句,2;,功效:假如表示式计算结果为,true,,执行语句,1,;不然执行语句,2,。,比如:,var num=Math.round(Math.random()*100);,if(num%2=0),alert(num+,是一个偶数,);,else,alert(num+,是一个奇数,);,关键语句,34/87,多分支选择。其普通格式以下:,if(,表示式,1),语句,1;,else if(,表示式,2),语句,2;,else if(,表示式,n),语句,n;,else,语句,n+1;,功效:假如表示式,1,值为,true,,执行语句,1,;不然计算表示式,2,值,假如返回,true,则执行语句,2,;假如全部表示式都不成立,则执行,else,后面语句,n+1,。,比如:,var age=parseInt(prompt(,请输入您年纪,);,if(age10)alert(,黄口小儿,);,else if(age20)alert(,年方弱冠,);,else if(age30)alert(,三十而立,);,else if(age=b),if(a=c)max=a;,else max=c;,else,if(b=c)max=b;,else max=c;,alert(max=+max);,关键语句,36/87,switch,语句,switch,语句用来实现多分支选择结构,其普通形式以下:,switch(,表示式,),case,常量表示式,1:,语句,1;break;,case,常量表示式,2:,语句,2;break;,case,常量表示式,n:,语句,n;break;,default:,语句,n+1;,功效:比较表示式值是否与某一个,case,后面常量表示式值相等,假如相等,则执行对应语句;假如全部,case,后面常量表示式值都不与表示式值相等,则执行,default,后面语句。,default,子句能够省略,即全部常量表示式值都不满足条件时直接跳过,switch,语句执行其后语句。,关键语句,37/87,比如:,var age=parseInt(prompt(,请输入您年纪,);,age=Math.floor(age/10);,switch(age),case 0:alert(,黄口小儿,);,break;,case 1:alert(,年方弱冠,);,break;,case 2:alert(,三十而立,);,break;,case 3:alert(,四十不惑,);,break;,default:alert(,英雄迟暮,);,break,语句用来直接跳出整个,switch,语句。假如省略,break,语句,在执行完某个,case,子句后会继续执行下一个,case,子句,直到遇上,break,语句或者全部子句都被执行完为止。,关键语句,38/87,循环语句,循环语句允许在逻辑条件成立时重复执行相同,语句,(,循环体,),。,while,语句,普通格式:,while(,表示式,),语句,;,功效:计算表示式值,假如计算结果为,true,,重复执行语句;不然结束循环。语句能够是单行语句或者复合语句。,比如:用,while,语句编写求,1+3+5+99,累加和程序:,var sum=0,i=1;,while(i=100),sum+=i;,i+=2;,关键语句,39/87,do-while,语句,普通格式:,do,语句,;,while(,表示式,);,功效:重复执行语句,直到表示式计算结果为,false,时结束循环。,比如:用,do-while,语句编写求,1+3+5+99,累加和程序:,var sum=0,i=1;,do,sum+=i;,i+=2;,while(i=100);,关键语句,40/87,for,语句,普通格式:,for(,表示式一,;,表示式二,;,表示式三,),语句,;,功效:,(1),计算表示式一值;,(2),计算表示式二值,假如计算结果为,true,,进入,(3),,否,则进入,(6),;,(3),执行语句;,(4),计算表示式三值;,(5),回到,(2),继续执行;,(6),结束循环,执行,for,语句后续语句。,比如:用,for,语句编写求,1+3+5+99,累加和程序:,var sum=0,i;,for(i=1;i=100;i+=2),sum+=i;,关键语句,41/87,循环语句嵌套,循环语句中又包含一个或多个循环语句称为循环语句嵌套。,比如:,var i,j;,for(i=1;i=4;i+),document.write();,for(j=1;j=2*i-1;j+),document.write(*,document.write();,for(i=1;i=3;i+),document.write();,for(j=1;j100),break;,if(i%2=0),continue;,sum+=i;,关键语句,43/87,标签语句,在,JavaScript,中,语句能够在其前面加上标签,普通格式为:,标识符,:,语句,;,标签必须是正当,JavaScript,标识符,不能是关键字或保留字。标签能够与程序中变量或函数同名。,经过给语句加标签,到达在程序其它位置引用该语句目标。,比如:,outer:for(i=0;i10;i+),for(j=0;ji),document.write();,continue outer;,k=i*j;,document.write(k+,if(k=9)break outer;,关键语句,44/87,在JavaScript中,函数用来封装那些在程序中反复使用程序段,常作为事件处理程序被调用。,函数基本组成,函数定义,一般格式:function 函数名(参数列表),函数体;,return 返回值;,说明:,function:定义函数关键字。,函数名:函数标识符,表示函数入口地址。,参数列表:包含若干个参数,不一样参数间用逗号间隔。当调用函数时,可以向参数列表中传入常量值、变量值或其它表达式值,函数内程序语句可以经过参数名称来引用传进来这些值。参数列表也可认为空。,函数体:实现函数功能程序语句。,return:指定函数返回值关键字。return语句负责将函数执行结果返回到程序中函数调用位置,一个函数中最多只能有一条return语句。,函数,45/87,例,定义一个求阶乘函数,function fact(n),var s=1,i;,for(i=1;i=n;i+),s=s*i;,return s;,定义函数关键字,函数名,参数列表,函数体,函数,返回函数执行结果,46/87,函数调用,普通格式:,函数名,(,实参列表,);,说明:,实参列表中包含若干个实际参数,参数之间用逗号间隔,实参个数应与函数定义时参数列表中参数个数相等。实参表示形式能够是常量、变量或者表示式,全部实参都必须得到详细赋值。,函数调用时参数传递都是以值传递方式进行。也就是说,在函数中将某个传进来变量值改变了,并不会影响原来函数外变量值。,比如:,function inc(n),n+;,alert(n);,var x=5;,inc(x);,alert(x);,函数,函数,调用,参数传递,函数定义,程序运行结果:,n=6 x=5,47/87,函数作用域,在函数外部申明变量称为全局变量,全局变量在程序,任何地方都能够使用。在函数内部申明变量称为局部变,量,局部变量应用关键字,var,申明,没有用,var,申明局部,变量在函数执行完成后会变成全局变量。,程序运行结果:,sum=8,程序运行结果:,y,未定义,function inc(n),y=+n;,return y;,var x=3;,var sum=inc(x)+y;,alert(sum);,function inc(n),var y=+n;,return y;,var x=3;,var sum=inc(x)+y;,alert(sum);,函数,48/87,函数嵌套与递归,函数嵌套:嵌套定义是指在定义一个函数过程中定义另一个函数,定义在某个函数内部函数称为局部函数,其作用域局限在所属框架函数。嵌套调用是指在调用一个函数过程中又调用另一个函数。,比如:,function lcm(m,n),/,框架函数,求最小公倍数,var res;,function gcd(m,n),/,局部函数,求最大条约数,var a,b,t;,if(mn)t=m;m=n;n=t;,a=m;b=n;,while(r=a%b)!=0)a=b;b=r;,return b;,res=m*n/gcd(m,n);,/,嵌套调用,gcd,函数,alert(m+,和,+n+,最小公倍数是,+res);,函数,49/87,函数递归:递归调用是指函数在调用过程中直接或间接调用本身,是一个特殊嵌套调用。,比如:,function fac(n),var res;,if(n=1)res=1;,else res=n*fac(n-1);,/,递归调用,return res;,var n=parseInt(prompt(,请输入整数,);,var f=fac(n);,alert(n+,阶乘是,+f);,函数,50/87,对象,对象是属性与方法集合,这些属性和方法被用来,描述对象特征与行为。,创建对象,方式一:,var,对象名,=new Object();,用,Object(),建立对象没有任何属性,能够经过“,对象名,.,属性名,=,属性值,;,”,方式为新建对象增加属性并指定属性值。,比如:,var teacher=new Object();,teacher.name=,杨鏖丞,;,teacher.age=32;,teacher.sex=,男,;,注意:,Object(),实际上是内部对象,Object,结构函数。,Object,对象是全部,JavaScript,对象父对象,它所提供属性和方法会被其它对象继承。,复合数据类型,51/87,创建对象,方式二:,var,对象名,=new,自定义结构函数名,(,实参列表,);,实参列表用来初始化新建对象属性。新建对象属性申明是在属性名称前加上“,this.”,,然后将参数值指定给它,或是直接设定属性初始值。,比如:,function person(n,a,s),this.name=n;,this.age=a;,this.sex=s;,var yac=new person(,杨鏖丞,32,男,);,var yyq=new person(,余颖秋,30,女,);,注意:关键字,this,是对当前对象引用。,复合数据类型,52/87,存取对象属性,方式一:,对象名,.,属性名,比如:,function birthday(y,m,d),this.year=y;,this.month=m;,this.day=d;,var p1=new birthday(,7,25);,alert(,生于,+p1.year+,年,+,p1.month+,月,+p1.day+,日,);,能够依据对象个别需求来增加它自己属性,个别定义对象属性不会影响其它对象。,比如:,var p2=new birthday(1976,2,15);,p2.time=,3:25,;,/p1,对象不具备,time,属性,复合数据类型,53/87,存取对象属性,方式二:,对象名,属性名,|,属性索引值,比如:,var p1=new Object();,p1year=;,p1month=7;,p1day=25;,alert(,生于,+p1.year+,年,+p1.month+,月,+,p1.day+,日,);,var p2=new Object();,p20=1976;,p21=2;,p22=15;,alert(,生于,+p20+,年,+p21+,月,+,p22+,日,);,复合数据类型,54/87,定义和调用对象方法,对象方法是描述对象动态特征操作序列,即函数。定义对象方法和定义对象属性非常类似,只需要将已定义函数名称指定给对象方法名,或者直接定义函数。普通格式为:,对象名,.,方法名,=,已定义函数名,;,或者,对象名,.,方法名,=,函数定义,;,比如:,function calAge(),return(new Date().getYear()-this.year;,function birthday(y,m,d),this.year=y;this.month=m;this.day=d;,this.getAge=calAge;,/,定义对象方法,var p=new birthday(,7,25);,alert(,年纪:,+p.getAge();,复合数据类型,55/87,定义和调用对象方法,上述对象方法定义也可写成:,function birthday(y,m,d),this.year=y;,this.month=m;,this.day=d;,this.getAge=function(),return(new Date().getYear()-this.year,;,调用对象方法普通格式为:,对象名,.,方法名,(,实参列表,),比如:,var p1=new birthday(1997,7,1);,var p2=new birthday(,8,1);,document.write(,年纪,1:+p1.getAge()+,年纪,2:+p2.getAge();,复合数据类型,56/87,对象操作语句及运算符,for.in,语句,普通格式:,for(,变量名,in,对象名,),循环体,;,该语句会将对象包含全部属性逐一取出来,当取得对象一个属性后会将该属性名称指定给变量,并继续执行,for,循环直到取得对象最终一个属性。该语句优点是无需知道对象中属性名称和个数即可进行操作。,比如:,var p=new birthday(1978,10,1);,for(var prop in p),document.write(,属性名,:+prop+,属性值,:+pprop+);,复合数据类型,57/87,对象操作语句及运算符,with,语句,普通格式:,with(,对象名,),语句段,;,该语句会将语句段内出现任何变量和函数都认为是对象属性和方法,从而简化对象引用过程。假如语句段内变量或函数不是对象属性或方法,则会自动引用,with,语句外部变量或函数。,比如:,var nativity=,湖北省武汉市,;,var p=new birthday(1992,11,3);,with(p),alert(,生于,+year+-+month+-+day);,alert(,籍贯:,+nativity);,复合数据类型,58/87,对象操作语句及运算符,typeof,运算符,普通格式:,typeof,运算量,typeof,运算符可放在任意类型运算量之前,返回结果是一个字符串,表明运算量数据类型。,比如:,var p=new birthday(1985,8,8);,var str=JavaScript;,var num=1000;,var flag=false;,function func(),alert(typeof p);,/,返回,object,alert(typeof str);,/,返回,string,alert(typeof num);,/,返回,number,alert(typeof flag);,/,返回,boolean,alert(typeof func);,/,返回,function,alert(typeof x);,/,返回,undefined,复合数据类型,59/87,对象操作语句及运算符,delete,运算符,普通格式:,delete,运算量,delete,运算符用来删除放在其后运算量,假如运算量被删除,返回,true,,不然返回,false,。运算量能够是变量、对象属性和数组元素。,比如:,var str=Hello World;,num=123;,var p=new birthday(1985,8,8);,var ary=new Array(1,2,3);,alert(delete str);,/,返回,false,alert(delete num);,/,返回,true,alert(delete p.year);,/,返回,true,alert(delete Math.PI);,/,返回,false,alert(delete ary2);,/,返回,true,注意:,用关键字var申明变量,,,内部对象属性不能用delete运算符删除。,复合数据类型,60/87,内部对象,JavaScript,提供了非常丰富内部对象,用户能够直接使用这些对象属性和方法来实现快速程序开发。,String,对象,创建,String,对象普通格式为:,var,对象名,=new String();,或,var,对象名,=new String(,字符串参数,);,比如:,var strObj=new String(Hello World!);,注意:在实际应用中,极少经过,new,运算符和,String(),结构函数创建,String,对象,而是直接使用字符串变量或字符串常量。比如:,var strVar=Java is a oriented-object language;,strVar,是一个存放了字符串值基本类型变量,,JavaScript,要求能够将其作为拥有属性和方法,String,对象处理。,复合数据类型,61/87,内部对象,Math,对象,Math,对象用于完成比简单算术运算更高级数学处理。,Math,对象不需要经过,new,运算符和结构函数创建,用户能够经过以下方式直接访问它属性和方法:,Math.,属性名,Math.,方法名,(,实参列表,),比如:,log=Math.LN10;,root=Math.SQRT2;,alert(Math.floor(log);,alert(Math.ceil(log);,alert(Math.round(root);,alert(Math.max(log,root);,alert(Math.floor(Math.random()*6)+1);,复合数据类型,62/87,内部对象,Date对象,Date对象提供了处理日期和时间强大功效,创建Date对象普通格式为:,var 对象名=new Date(实参列表);,比如:var d1=new Date();,var d2=new Date(,7,8,20,0,0);,注意:在使用Date对象进行日期和时间处理时要考虑时区原因。在JavaScript中,Date对象中包含日期和时间信息实际上是一个以毫秒为单位值,该值从GMT(格林尼治标按时间)时区1970年1月1日0时0分0秒开始计算。以上面d2对象为例,假如PC内部时钟设置时区为东八区(北京所在时区),那么可认为d2中包含详细时间是北京时间8月8日20时0分0秒,但实际存放是格林尼治标按时间
展开阅读全文