Javascript,其实就是一种WEB脚本的编写语言。属于“解释型”语言,由WEB浏览器下载到本地电脑的缓冲区,由WEB浏览器翻译并执行代码。学习过脚本语言的网友应该都清楚,脚本语言是由“宿主程序”解释并执行的代码。一般的脚本语言并不具有通用性。大家也可以把javascript理解为一种“基于客户端的脚本语言”。在这里我还要插一句:最好能够在学习javascript之前先学习使用HTML。Javascript最初称为livescript,后来被重命名为“javascript“以表明javascript开始与sun公司的java语言建立了市场关系。 下面将描述javascript能够实现的功能:
1,在浏览器的状态栏或警告框里,想访问者显示消息。 2,验证表单内容并进行计算。
3,响应鼠标与键盘事件,以实现更好的交互效果。
4,检测客户端浏览器特性,并只在支持相应功能的浏览器上执行该功能,以保证浏览器发生错误。
5,在不需要访问者重新加载页面的前提下,更新当前页面元素。 6,可以很好的与远程服务器交互数据,从而实现服务器的作用。 如何在HTML里嵌入javascript ?
可以通过 //代表脚本语言的结束。
Language属性指出编写脚本所使用的语言。 Type 属性指出脚本的类型。
还有src属性用于指出脚本文件名(.js)。
这里要指出的是除了事件响应程序以外,任何javascript代码必须要写在之间。
可以在HTML以下的4个部分中使用javascript:
多个文档可以同时使用一个.js文件,由于浏览器会在缓存中保存脚本文件,所以这样可以很有效的缩短显示网页的时间。 Javascript的事件响应机制:
由于javascript可以很好的实现交互式的页面,所以“事件响应“机制是必不可少的。 可以通过以下语法实现事件响应的定义:
可以在HTML标签内部指定将要响应的事件名,与””括住的响应方法。来实现。我们可以把事件的响应代码放在的javascript文件中。这样可以把一个.js文件应用到多个标签上。不但可以节省代码,当要修改响应代码的时候也非常的便利。就象是C中的宏定义一样。WEB浏览器与javascript:Javascript在不同浏览器上的执行结果是完全不同的。这使得很难编写出能够运行在所有WEB浏览器上的代码。在某些不兼容的浏览器上完全有可能导致javascript不被执行,甚至是浏览器出现错误。 什么是DOM ?DOM就是Document Object Model的缩写。翻译成中文就是”文档对象模型”。是指用来呈现WEB文档的一组标准化对象的运用。使用javascript通过DOM可以完全的控制整个页面。 如何指定javascript的版本 ?有2种方法可以指定javascript的版本:可以在language属性中指定,如:之间。如果浏览器在之间发现了无效的javascript语句的话,将会显示javascript错误信息。在javascript中变量被理解为一个容器,用于存储数据。在javascript中变量是无类型的。Javascript中标识符是区分大小写的,这一点要予以注意。在javascript中语句结束标记(;)不是必须写的,但是笔者建议大家写,因为这样可以提供可读性。无论是什么规则尽量不要用缺省的写法。 在javascript中创建输出:Javascript内置了一些显示信息的方法,最简单也是最常用的方法是:document.write() 该方法的输出将被作为WEB页面的一部分来显示。可以在javascript中以字符串的形式插入HTML标签,一般用于格式化输出。 执行javascript脚本:Javascript代码编辑完之后可以在WEB浏览器中加载该脚本以运行它,我们可以看到它的执行结果。具体加载脚本的步骤是:文件 -> 打开 -> 选择文件名 -> 打开该文件当然最简单的办法就是,直接运行.html\\.htm\\.js等文件,因为该类文件的默认打开程序是WEB浏览器。这里有一点要予以注意,IE6.0的默认安全设置允许执行远程的脚本,但不允许执行本地脚本。如何处理javascript中存在的Bug:Javascript中的错误通常都是由输入错误所引起的。一般的语法错误WEB浏览器可以显示错误信息以便于程序员诊断。在Firefox中我们可以通过“错误控制台”来测试脚本。通过错误控制台可以执行一条javascript语句,并且可以定位错误行。遗憾的是并不是所有的错误都可以被浏览器识别出来。第三章:开始javascript编程 Javascript中的语句:语句是javascript脚本的基本组成单元,其实,一条语句就是执行某一特定功能的代码而已,通常由分号(;)结尾。每一条语句可以在javascript控制台中单独被执行。在javascript中语句并不一定非要以分号结尾的,在语句独占一行的时候可以不写分号的,但是笔者建议大家一定要写分号,这样可以提高代码的可读性。当然这也是标准的写法。 利用函数(function)来完成任务:在javascript中使用函数的优点有2处: 可以很好的把脚本的各个逻辑块分离,从而让脚本更便于人们理解。结构化增强,便于维护。 可以避免使用重复的语句,从而降低最终脚本的体积。函数的通用性使得利用固有的算法处理不同的数据(data)。Javascript包含许多内置函数,从而javascript可以完成更为强大的功能,使得开发更加的简单、高效。Javascript中的变量:在javascript中可以通过关键字 var 声明变量,例如:var value=99;以上语句声明了一个变量 value 并且向其内部赋入99。在javascript中变量可以隐含被声明,也就是不必指定关键字var 。javascript中变量是无类型的,准确的说是在声明的时候不用给变量指定数据类型。 理解javascript中的对象(object):Javascript支持对象,所以我们可以把它理解为“面向对象”。但是它并不是真正的支持面向对象,但是javascript正在向着这方面发展。相信在不久的将来javascript可以实现真正的面向对象机制。由于“面向对象”与“面向过程”是2种完全不同的“程序设计思想”,所以有一些关于面向对象的概念需要我们重新来认识:对象中储存的数据称为对象的属性(描述对象的静态特征)。基于对象的方法(对数据的操作)被称为行为(对象所具有的行为,属于对象的动态特征)。 在javascript中也和其他面向对象的语言相同,是使用 . 来引用对象的成员,比如: Object.Display();Javascript支持3种类型的对象:Javascript的内置对象:Date String Array Math等。文档对象模型(document object model):该对象表示了浏览器的组建与当前HTML文档。 自定义对象:由程序员自己创建的对象。 Javascript中的“分支语句”:根据Boolean值来判断该执行哪条语句(分支体)。从而做出更加恰当的选择,也可以根据用户的输入来执行特定的程序路线。 Javascript中的“循环语句”:根据Boolean值来判断是否继续执行同一个语句或同一个块(循环体)。这一章不会深入讲到循环,所以这只记载关于循环的简单介绍。Javascript中的“事件响应程序”:Javascript中的事件处理程序实际上就是处理页面事件的脚本而已。一个事件实际上就是发生在浏览器中的一个动作,可以用以下关系来描述: 动作 ->触发-> 事件一个事件实际上表明了发生在某一特定对象上的动作,脚本可以通过预先设定的响应代码来响应该事件。有些“事件”是预期的,或者说是:我们希望它(事件)发生的。而有些事件则是在我们预期只外的,我们不希望它发生的。Javascript中的事件响应程序,告诉浏览器在一个特定的事件发生时,它(浏览器)该如何做。脚本(script)是按照用户的动作来响应的,并非顺序执行。有些事件是由用户所触发的,而有些则是由浏览器所触发的,比如下载页面完毕等。每个事件处理程序与一个浏览器对象相关联,也就是说:它(事件)只为该对象服务。每一个浏览器对象所能够监听到的事件都不同,我们可以在对象标签内指定事件响应程序。 WEB浏览器执行脚本的顺序:在一个WEB文档里,可能包含了多个脚本。也就是多组标签,但是浏览器先执行哪个脚本后执行哪个脚本呢?这由一个“逻辑形式”所决定: 先执行标签内部的script,因为标签内的脚本不能够理解被执行而只是被预先定义,一被后面的脚本所引用。所以在这里定义函数是非常合适的。 执行完之后,浏览器开始执行标签,该标签内的脚本将会被立即执行。如果在有多个脚本则按照先后次序依次被执行。此时浏览器将会进入等待状态,等待事件的发生。当特定事件发生时,浏览器会去执行预先定义的事件处理程序(通常被定义在标签内。 Javascript语法规则:Javascript的语法规则,就是定义如何来使用该语言。Javascript的语法规则应该是有浏览器内部的解释器定义。以下有几点javascript的几点基础规则: 区分大小写:javascript中的标识符是区分大小写的,这与其他一些语言是相同的。Javascript中的关键字必须要小写。Javascript的内置对象是以大写字母开头的,比如:Math\\Date等。DOM(文档对象模型)对象必须要小写,但其方法通常是大小写混合。标识符大小写错误,可以被浏览器识别,属于是语法错误。标识符的命名规则:javascript中的标识符可以是字母、数字、下划线。但是标识符不可以以数字开头。这一点与C语言是相同的。保留字:保留字是javascript语言系统所定义的具有特殊含义的„词‟。不可以用做标识符。Javascript中的保留字包括:控制程序执行流程的if\\for,DOM对象window\\document,还有内置对象Date\\Math等。空格符号:javascript是忽略空格的,包括在一行在包含空格与TAB符号,或者是空白行。空格的出现主要是为了提高javascript的可读性。 在javascript中使用注释:学习过计算机语言的人都应该知道“注释”实际上就是对程序代码的附加说明,主要是为了提高可读性的目的。这在其他人阅读你写的程序或过一段时间在回过头来读自己的程序都是非常有帮助的。如果想在javascript中添加注释的话,可以使用以下2种格式:1,//注释说明,此种格式的注释主要用于为一行代码注释说明使用的,与C++的注释语法是一样的。2,/*注释说明*/,此种格式的注释将跨越多行把阔住的内容注释掉。这是C语言风格的注释,在调试代码的时候是非常有帮助的。在注释范围内的所有内容都将被解释程序所忽略,不会得到执行机会。这里有一点要注意到:以上2种注释方法,是基于javascript的,所以只能够在标签之间嵌入javascript,但是这样只适合较小的脚本,并且笔者并不推荐这种结构。对于比较复杂与专业的程序,这样的结构导致了后期的维护相当的困难。函数(function)的出现也是为了解决该问题。 如何定义函数:在javascript中函数被做为一个基本的组成模块看待,要定义函数必须按照以下格式来完成: Function name() {//函数体(语句序列)}Function:是关键字,用于定义函数。 Name:是标识符,是给函数取的名字。当然,函数也可以接收一个或更多的参数,以实现它的通用性。如果想在HTML中嵌入函数的话,最好的位置会是标签内,因为中的语句将会被先执行,这样可以保证函数在被调用之前已经被定义过。 如何来调用已定义过的函数: 调用函数,实际上就是给被调用函数一次执行的机会,可以是给定参数的调用或无参数的调用。这里有一点要注意的是,javascript中函数调用过程中参数的传递方式是“值传递“,也就是会copy一个副本过去。比如可以用以下的语句来调用前面定义过的函数:Name();临时插上一句:浏览器在显示警告框的同时,javascript代码将会被挂起。知道按下确定按扭。返回值 关于 函数(function):作为函数它的最后一项任务就是要把处理的结果返回给主掉者,当然这也是函数的最终目的:return result;return 是javascript语言系统中预先定义的关键字。用于返回数据的。很多语言中都使用该关键字。这里有一点要注意的是,可以在表达式中使用函数调用,前提是该函数有返回值。 Javascript中的对象(object):实际上要明白,javascript并没做到完全支持面向对象机制,而只是支持面向对象机制的一部分。对象=变量+方法 这个表达式通常情况下成立的,对象中的变量可以理解为对象的属性,用于描述对象的静态特征,而对象中的方法实际上就是对象所具有的行为,是对象的动态特征。Javascript中的对象按照组建类型来分类可以分为以下几类: DOM对象:允许javascript与WEB页面交互。内置对象:是语言系统预先定义的对象,可以在脚本中直接来引用。 自定义对象:由脚本编写者自己来定义。 对象(object)可以简化脚本:在javascript中我们通常处理数据都是使用的变量,这里在处理简单数据时很有效。但是有的时候我们要处理一些比较具体的对象结构,比如人员管理系统、图书管理系统等。在处理这类结构的时候我们可以使用对象(object)。他可以很好的组织要要出的数据与使用的操作。在javascript中的对象实际上可以表示一个显示中的存在的实体。 Javascript中如何定义对象(object): 定义对象分为以下几个步骤:给对象选一个适合它与顾名思义的名字。给该对象拟订所需要的属性,也就是不同的变量。定义一个函数(function)作为对象(object)的构造函数,用于创建该对象。对象构造函数定义类似于下面:Function obj(name,address,work,home) {This.name=name; This.address=address; This.work=work; This.home=home; }构造函数中的关键字this 代表当前即将创建的对象。 如何给对象定义方法:因为javascript中的同一类对象都有相同的属性,所以我们可以定义一个方法同意的为所有同一类对象使用。脚本编写者定义的方法必须要以函数(function)的形式编写。定义对象的方法类似于以下语法:Function printObj() {This.name; //通常需要使用到对象内部的属性 //函数体}通常对象方法需要读取对象的属性,以上我们定义了对象的方法,但是它还没有成为obj对象的方法。在定义完对象的方法以后,还需要把该方法指定给对象。告诉对象它有一个成员方法。 //定义对象Function Obj(name,home) {This.name=name; This.home=home;This.objPrint=objPrint; }以上代码定义了一个对象Obj,并且给该对象指定了它的成员方法objPrint()。大家可以很容易的看到给对象添加方法就象对象属性一样,但是objPrint之前被定义为函数(function)所以对象会调用该外部函数。临时插上一句:javascript中通常的好习惯是,变量名一般用小写,而方法名一般用大写。 对象的实例化(派生):在javascript中可以通过关键字 new 来派生一个对象的实例,派生对象语法类似于以下: Tom=new Obj(“name”,”555-9999”);Javascript中可以把定义对象时的对象理解为对象的摸板,当需要使用该对象的时候可以根据该摸板来派生对象的实例。以上语句根据给定的构造参数派生了一个对象实例tom。在派生对象时也可以不给定构造参数,以后可以再次赋值。 扩展内置对象:Javascript提供了一种功能,可以扩展内置对象的定义。可以向其内部添加属性与方法。Prototype关键字允许在对象构造函数之外更改对象的定义。 向内置对象添加属性与方法分为以下几个步骤: 定义外部函数,作为内置对象的新方法 Object.prototype.newfunction=newfunction;第七章:分支与循环结构改变脚本执行流程Javascript中的语句按照先后次序依次得到执行的机会,但是有时候需要改变执行的路径。就需要使用分支与循环结构了。大多数语言也都提供了流程控制语句。Javascript中提供了2中类型的流程控制语句: 分支语句:if if-lese switch 循环语句:while do-while for计算机语言最重要的功能之一就是能够比较2个值,而分支与循环就是基于这样的原理。 If语句:If是很多编程语言都有的分支语句,当然在javascript中也使用它。If(如果)语句有2个部分:If(value==9) value=0;以上语句可以分为2个部分: 条件:(value==9) 动作:value=0;把以上语句翻译成中文就是:如果value等于9,把0赋给value临时插上一句:在javascript中也可以比较2个常量,但是这样是没有任何意义的,除非是死循环。 If-else语句:Else语句告诉解释程序在if语句内的条件为false时,该如何做。例如: If(value==9) Value=0;Else Value=1;条件表达式:该条件表达式可以被理解为简写版的if-else语句,C语言也支持该表达式: 变量=(条件)?(动作1):(动作2);以上条件表达式可以理解为:如果条件为true就执行动作1否则执行动作2。简单的情况下可以使用该表达式,如果比较复杂的时候建议使用if-else语句,可读性会比较高些。Switch(多分支选择)语句:当然,脚本可以通过if-else测试变量的多个可能值,但是,那样语句会写的很深,可读性较差。这个时候可以考虑采用switch语句,该语句可以测试相同变量的多个可能值。Switch语句的一般语法格式如下: Switch(button) {Case “next”:语句序列;break; Case “previous”:语句序列;break; Defaule:默认处理方式;}Switch语句的由以下几个部分组成:switch(value):这是switch的头部,括号中的变量是等到被测试的唯一值。case:是switch的可能值之一,与switch指定值进行比较,如果相同就执行后续语句序列。 break:如果某一case得到执行,他保证执行完以后跳出switch,从而后面的case都不会得到执行机会。default:通常会写在最后面,如果之前的所有case都不匹配的话,就从default离开switch结构。循环语句for:循环实际上就是多次执行同一语句块,javascript中的循环语句包括:foe\\while\\do-while。For循环语句结构如下:For(初始条件;验证条件;改变条件;) {//循环体}以上是for语句的3个参数,可以实现任何方式的循环。功能非常强大。 For循环结构的执行次序是:初始条件在整个循环过程中只执行一次。 判断条件是否为true?如果条件为true,就执行循环体(被括号括住的语句序列)。循环体执行完毕,执行改变条件表达式(用于改变验证条件的值)。 直到条件为false时跳出循环体,执行循环体之后的语句。这里要明白的是,通常循环变量只是用于循环结构内部,所以一般可以声明在for的内部。 这里要临时插上一句:大家经常会看到在循环中经常使用变量 i 作为循环计数器,这是一种编程传统,始于一种名称为Forth的古老计算机语言。临时插上一句:javascript的语法基于java,而java的语法则基于C语言。 循环语句 while:相对于for循环,while要简单的多。While只有一个条件,只要该条件为true就执行循环体,反之如果条件为false就跳出循环结构。While循环语句结构类似于以下:While(value) {--value; }可以很容易的发现,该循环没有在while参数中改变条件,只要value不为0就一直循环。所以改变条件的语句必须要写在循环体中。否则该循环就是死循环。其实很明显,while与for的区别就是for多了2个参数,用语初始化条件与改变条件。当然我个人认为for更加紧凑一些。 循环语句 do-while:这里只介绍do-while与while的区别,do-while相对于while的区别是:do-while是先执行循环体,然后在验证条件是否成立。这样不难想象,do-while至少要执行一次循环体,而while有可能一次循环体都不执行。 什么是死循环?死循环是编码员在编码过程中出现的逻辑错误,解释程序没有办法发现该类错误。只能靠编码员自己去发现。死循环的概念:当循环条件永远为true或者是循环结构中没有去改变循环条件时发生死循环。比如以下代码,就是一个典型的死循环:While(value) {++n; }循环体中并没有改变循环条件,所以该条件会永远为true(真),死循环通常会导致程序挂起,严重的可能会导致程序崩溃。避免死循环的常用方法就是当某个变量满足一定条件时候利用关键字 break 跳出循环,可以象下面这样来实现:While(value) { ++n If(n==9) Break; }转向语句 break 与 continue:Break语句可以出现在任何循环结构中包括switch结构,它的作用是跳出循环结构。从循环之后的第一条语句开始执行。上面已经介绍过该语句了。Continue语句,该语句与break不同的是它并不会跳出循环结构,而是继续执行该循环结构的下一次。也就是从新判断条件是否为true。以下是一个简单的continue应用的例子:For(i=0;i<10;++i) {If(i==9) Continue; }以上代码可以可以实现当i等于9的时候把控制从新交给判断条件。以上代码的continue其实是多余的,因为只是在最后一次循环continue得到执行的机会,之后则立即退出循环。第八章:javascript中的内置对象与程序库Math对象:该对象属于javascript的内置对象,包含了数学常数与函数。 如何通过Math对象来生成随机数?可以通过Math.random()来生成随机数,该方法不接收任何参数。Math.random()返回0-1之间的随机小数。 With关键字:With关键字可以节省代码量。With可以指定一个对象名称,并且包含被扩在大括号内部的语句块。块内的属性与方法如果没有明确指定对象的话,都将认为是with指定对象的属性与方法。日期对象Date:Date属于javascript内置对象,可以为日期与时间的处理提供方便。Date对象没有任何属性。Date对象的实例化:可以通过new关键字来派生一个Date对象,可以指定构造参数。如果不指定构造参数的话,当前时间将会被存储在Date对象里。 第三方程序库:使用第三方程序库的好处是,使用最少的代码实现最复杂的功能。第三方程序库实际上是有些其他脚本编写者写的.js文件,我们可以直接把该文件保存到站点目录然后直接用
可以在HTML标签内部指定将要响应的事件名,与””括住的响应方法。来实现。我们可以把事件的响应代码放在的javascript文件中。这样可以把一个.js文件应用到多个标签上。不但可以节省代码,当要修改响应代码的时候也非常的便利。就象是C中的宏定义一样。
WEB浏览器与javascript:
Javascript在不同浏览器上的执行结果是完全不同的。这使得很难编写出能够运行在所有WEB浏览器上的代码。在某些不兼容的浏览器上完全有可能导致javascript不被执行,甚至是浏览器出现错误。 什么是DOM ?
DOM就是Document Object Model的缩写。翻译成中文就是”文档对象模型”。是指用来呈现WEB文档的一组标准化对象的运用。使用javascript通过DOM可以完全的控制整个页面。 如何指定javascript的版本 ?
有2种方法可以指定javascript的版本:
可以在language属性中指定,如:之间。如果浏览器在之间发现了无效的javascript语句的话,将会显示javascript错误信息。在javascript中变量被理解为一个容器,用于存储数据。在javascript中变量是无类型的。Javascript中标识符是区分大小写的,这一点要予以注意。在javascript中语句结束标记(;)不是必须写的,但是笔者建议大家写,因为这样可以提供可读性。无论是什么规则尽量不要用缺省的写法。 在javascript中创建输出:
Javascript内置了一些显示信息的方法,最简单也是最常用的方法是:document.write() 该方法的输出将被作为WEB页面的一部分来显示。可以在javascript中以字符串的形式插入HTML标签,一般用于格式化输出。 执行javascript脚本:
Javascript代码编辑完之后可以在WEB浏览器中加载该脚本以运行它,我们可以看到它的执行结果。具体加载脚本的步骤是:
文件 -> 打开 -> 选择文件名 -> 打开该文件
当然最简单的办法就是,直接运行.html\\.htm\\.js等文件,因为该类文件的默认打开程序是WEB浏览器。这里有一点要予以注意,IE6.0的默认安全设置允许执行远程的脚本,但不允许执行本地脚本。
如何处理javascript中存在的Bug:
Javascript中的错误通常都是由输入错误所引起的。一般的语法错误WEB浏览器可以显示错误信息以便于程序员诊断。在Firefox中我们可以通过“错误控制台”来测试脚本。通过错误控制台可以执行一条javascript语句,并且可以定位错误行。遗憾的是并不是所有的错误都可以被浏览器识别出来。
第三章:开始javascript编程 Javascript中的语句:
语句是javascript脚本的基本组成单元,其实,一条语句就是执行某一特定功能的代码而已,通常由分号(;)结尾。每一条语句可以在javascript控制台中单独被执行。在javascript中语句并不一定非要以分号结尾的,在语句独占一行的时候可以不写分号的,但是笔者建议大家一定要写分号,这样可以提高代码的可读性。当然这也是标准的写法。 利用函数(function)来完成任务:
在javascript中使用函数的优点有2处: 可以很好的把脚本的各个逻辑块分离,从而让脚本更便于人们理解。结构化增强,便于维护。 可以避免使用重复的语句,从而降低最终脚本的体积。函数的通用性使得利用固有的算法处理不同的数据(data)。
Javascript包含许多内置函数,从而javascript可以完成更为强大的功能,使得开发更加的简单、高效。
Javascript中的变量:
在javascript中可以通过关键字 var 声明变量,例如:
var value=99;
以上语句声明了一个变量 value 并且向其内部赋入99。
在javascript中变量可以隐含被声明,也就是不必指定关键字var 。javascript中变量是无类型的,准确的说是在声明的时候不用给变量指定数据类型。 理解javascript中的对象(object):
Javascript支持对象,所以我们可以把它理解为“面向对象”。但是它并不是真正的支持面向对象,但是javascript正在向着这方面发展。相信在不久的将来javascript可以实现真正的面向对象机制。
由于“面向对象”与“面向过程”是2种完全不同的“程序设计思想”,所以有一些关于面向对象的概念需要我们重新来认识:
对象中储存的数据称为对象的属性(描述对象的静态特征)。
基于对象的方法(对数据的操作)被称为行为(对象所具有的行为,属于对象的动态特征)。 在javascript中也和其他面向对象的语言相同,是使用 . 来引用对象的成员,比如: Object.Display();
Javascript支持3种类型的对象:
Javascript的内置对象:Date String Array Math等。
文档对象模型(document object model):该对象表示了浏览器的组建与当前HTML文档。 自定义对象:由程序员自己创建的对象。 Javascript中的“分支语句”:
根据Boolean值来判断该执行哪条语句(分支体)。从而做出更加恰当的选择,也可以根据用户的输入来执行特定的程序路线。 Javascript中的“循环语句”:
根据Boolean值来判断是否继续执行同一个语句或同一个块(循环体)。这一章不会深入讲到循环,所以这只记载关于循环的简单介绍。
Javascript中的“事件响应程序”:
Javascript中的事件处理程序实际上就是处理页面事件的脚本而已。一个事件实际上就是发生在浏览器中的一个动作,可以用以下关系来描述: 动作 ->触发-> 事件
一个事件实际上表明了发生在某一特定对象上的动作,脚本可以通过预先设定的响应代码来响应该事件。
有些“事件”是预期的,或者说是:我们希望它(事件)发生的。而有些事件则是在我们预期只外的,我们不希望它发生的。
Javascript中的事件响应程序,告诉浏览器在一个特定的事件发生时,它(浏览器)该如何做。脚本(script)是按照用户的动作来响应的,并非顺序执行。有些事件是由用户所触发的,而有些则是由浏览器所触发的,比如下载页面完毕等。
每个事件处理程序与一个浏览器对象相关联,也就是说:它(事件)只为该对象服务。每一个浏览器对象所能够监听到的事件都不同,我们可以在对象标签内指定事件响应程序。 WEB浏览器执行脚本的顺序:
在一个WEB文档里,可能包含了多个脚本。也就是多组标签,但是浏览器先执行哪个脚本后执行哪个脚本呢?这由一个“逻辑形式”所决定: 先执行
此时浏览器将会进入等待状态,等待事件的发生。当特定事件发生时,浏览器会去执行预先定义的事件处理程序(通常被定义在
Javascript的语法规则,就是定义如何来使用该语言。Javascript的语法规则应该是有浏览器内部的解释器定义。以下有几点javascript的几点基础规则: 区分大小写:javascript中的标识符是区分大小写的,这与其他一些语言是相同的。Javascript中的关键字必须要小写。Javascript的内置对象是以大写字母开头的,比如:Math\\Date等。DOM(文档对象模型)对象必须要小写,但其方法通常是大小写混合。标识符大小写错误,可以被浏览器识别,属于是语法错误。
标识符的命名规则:javascript中的标识符可以是字母、数字、下划线。但是标识符不可以以数字开头。这一点与C语言是相同的。
保留字:保留字是javascript语言系统所定义的具有特殊含义的„词‟。不可以用做标识符。Javascript中的保留字包括:控制程序执行流程的if\\for,DOM对象window\\document,还有内置对象Date\\Math等。
空格符号:javascript是忽略空格的,包括在一行在包含空格与TAB符号,或者是空白行。空格的出现主要是为了提高javascript的可读性。 在javascript中使用注释:
学习过计算机语言的人都应该知道“注释”实际上就是对程序代码的附加说明,主要是为了提高可读性的目的。这在其他人阅读你写的程序或过一段时间在回过头来读自己的程序都是非常有帮助的。如果想在javascript中添加注释的话,可以使用以下2种格式:
1,//注释说明,此种格式的注释主要用于为一行代码注释说明使用的,与C++的注释语法是一样的。
2,/*注释说明*/,此种格式的注释将跨越多行把阔住的内容注释掉。这是C语言风格的注释,在调试代码的时候是非常有帮助的。
在注释范围内的所有内容都将被解释程序所忽略,不会得到执行机会。这里有一点要注意到:以上2种注释方法,是基于javascript的,所以只能够在标签之间嵌入javascript,但是这样只适合较小的脚本,并且笔者并不推荐这种结构。对于比较复杂与专业的程序,这样的结构导致了后期的维护相当的困难。函数(function)的出现也是为了解决该问题。 如何定义函数:
在javascript中函数被做为一个基本的组成模块看待,要定义函数必须按照以下格式来完成: Function name() {
//函数体(语句序列)
}
Function:是关键字,用于定义函数。 Name:是标识符,是给函数取的名字。
当然,函数也可以接收一个或更多的参数,以实现它的通用性。
如果想在HTML中嵌入函数的话,最好的位置会是
Name();
临时插上一句:浏览器在显示警告框的同时,javascript代码将会被挂起。知道按下确定按扭。
返回值 关于 函数(function):
作为函数它的最后一项任务就是要把处理的结果返回给主掉者,当然这也是函数的最终目的:
return result;
return 是javascript语言系统中预先定义的关键字。用于返回数据的。很多语言中都使用该关键字。这里有一点要注意的是,可以在表达式中使用函数调用,前提是该函数有返回值。 Javascript中的对象(object):
实际上要明白,javascript并没做到完全支持面向对象机制,而只是支持面向对象机制的一部分。对象=变量+方法 这个表达式通常情况下成立的,对象中的变量可以理解为对象的属性,用于描述对象的静态特征,而对象中的方法实际上就是对象所具有的行为,是对象的动态特征。
Javascript中的对象按照组建类型来分类可以分为以下几类: DOM对象:允许javascript与WEB页面交互。
内置对象:是语言系统预先定义的对象,可以在脚本中直接来引用。 自定义对象:由脚本编写者自己来定义。 对象(object)可以简化脚本:
在javascript中我们通常处理数据都是使用的变量,这里在处理简单数据时很有效。但是有的时候我们要处理一些比较具体的对象结构,比如人员管理系统、图书管理系统等。在处理这类结构的时候我们可以使用对象(object)。他可以很好的组织要要出的数据与使用的操作。在javascript中的对象实际上可以表示一个显示中的存在的实体。 Javascript中如何定义对象(object): 定义对象分为以下几个步骤:
给对象选一个适合它与顾名思义的名字。
给该对象拟订所需要的属性,也就是不同的变量。
定义一个函数(function)作为对象(object)的构造函数,用于创建该对象。对象构造函数定义类似于下面:
Function obj(name,address,work,home) {
This.name=name; This.address=address; This.work=work; This.home=home; }
构造函数中的关键字this 代表当前即将创建的对象。 如何给对象定义方法:
因为javascript中的同一类对象都有相同的属性,所以我们可以定义一个方法同意的为所有同一类对象使用。脚本编写者定义的方法必须要以函数(function)的形式编写。定义对象的方法类似于以下语法:
Function printObj() {
This.name; //通常需要使用到对象内部的属性 //函数体
通常对象方法需要读取对象的属性,以上我们定义了对象的方法,但是它还没有成为obj对象的方法。在定义完对象的方法以后,还需要把该方法指定给对象。告诉对象它有一个成员方法。 //定义对象
Function Obj(name,home) {
This.name=name; This.home=home;
This.objPrint=objPrint; }
以上代码定义了一个对象Obj,并且给该对象指定了它的成员方法objPrint()。大家可以很容易的看到给对象添加方法就象对象属性一样,但是objPrint之前被定义为函数(function)所以对象会调用该外部函数。
临时插上一句:javascript中通常的好习惯是,变量名一般用小写,而方法名一般用大写。 对象的实例化(派生):
在javascript中可以通过关键字 new 来派生一个对象的实例,派生对象语法类似于以下: Tom=new Obj(“name”,”555-9999”);
Javascript中可以把定义对象时的对象理解为对象的摸板,当需要使用该对象的时候可以根据该摸板来派生对象的实例。以上语句根据给定的构造参数派生了一个对象实例tom。在派生对象时也可以不给定构造参数,以后可以再次赋值。 扩展内置对象:
Javascript提供了一种功能,可以扩展内置对象的定义。可以向其内部添加属性与方法。Prototype关键字允许在对象构造函数之外更改对象的定义。 向内置对象添加属性与方法分为以下几个步骤: 定义外部函数,作为内置对象的新方法 Object.prototype.newfunction=newfunction;
第七章:分支与循环结构改变脚本执行流程
Javascript中的语句按照先后次序依次得到执行的机会,但是有时候需要改变执行的路径。就需要使用分支与循环结构了。大多数语言也都提供了流程控制语句。Javascript中提供了2中类型的流程控制语句: 分支语句:if if-lese switch 循环语句:while do-while for
计算机语言最重要的功能之一就是能够比较2个值,而分支与循环就是基于这样的原理。 If语句:
If是很多编程语言都有的分支语句,当然在javascript中也使用它。If(如果)语句有2个部分:
If(value==9) value=0;
以上语句可以分为2个部分: 条件:(value==9) 动作:value=0;
把以上语句翻译成中文就是:
如果value等于9,把0赋给value
临时插上一句:在javascript中也可以比较2个常量,但是这样是没有任何意义的,除非是死循环。 If-else语句:
Else语句告诉解释程序在if语句内的条件为false时,该如何做。例如: If(value==9) Value=0;
Else Value=1;
条件表达式:
该条件表达式可以被理解为简写版的if-else语句,C语言也支持该表达式: 变量=(条件)?(动作1):(动作2);
以上条件表达式可以理解为:如果条件为true就执行动作1否则执行动作2。
简单的情况下可以使用该表达式,如果比较复杂的时候建议使用if-else语句,可读性会比较高些。
Switch(多分支选择)语句:
当然,脚本可以通过if-else测试变量的多个可能值,但是,那样语句会写的很深,可读性较差。这个时候可以考虑采用switch语句,该语句可以测试相同变量的多个可能值。Switch语句的一般语法格式如下: Switch(button) {
Case “next”:语句序列;break; Case “previous”:语句序列;break; Defaule:默认处理方式;
Switch语句的由以下几个部分组成:
switch(value):这是switch的头部,括号中的变量是等到被测试的唯一值。
case:是switch的可能值之一,与switch指定值进行比较,如果相同就执行后续语句序列。 break:如果某一case得到执行,他保证执行完以后跳出switch,从而后面的case都不会得到执行机会。
default:通常会写在最后面,如果之前的所有case都不匹配的话,就从default离开switch结构。
循环语句for:
循环实际上就是多次执行同一语句块,javascript中的循环语句包括:foe\\while\\do-while。For循环语句结构如下:
For(初始条件;验证条件;改变条件;) {
//循环体
以上是for语句的3个参数,可以实现任何方式的循环。功能非常强大。 For循环结构的执行次序是:
初始条件在整个循环过程中只执行一次。 判断条件是否为true?
如果条件为true,就执行循环体(被括号括住的语句序列)。
循环体执行完毕,执行改变条件表达式(用于改变验证条件的值)。 直到条件为false时跳出循环体,执行循环体之后的语句。
这里要明白的是,通常循环变量只是用于循环结构内部,所以一般可以声明在for的内部。 这里要临时插上一句:大家经常会看到在循环中经常使用变量 i 作为循环计数器,这是一种编程传统,始于一种名称为Forth的古老计算机语言。
临时插上一句:javascript的语法基于java,而java的语法则基于C语言。 循环语句 while:
相对于for循环,while要简单的多。While只有一个条件,只要该条件为true就执行循环体,反之如果条件为false就跳出循环结构。While循环语句结构类似于以下:
While(value) {
--value; }
可以很容易的发现,该循环没有在while参数中改变条件,只要value不为0就一直循环。所以改变条件的语句必须要写在循环体中。否则该循环就是死循环。
其实很明显,while与for的区别就是for多了2个参数,用语初始化条件与改变条件。当然我个人认为for更加紧凑一些。 循环语句 do-while:
这里只介绍do-while与while的区别,do-while相对于while的区别是:do-while是先执行循环体,然后在验证条件是否成立。这样不难想象,do-while至少要执行一次循环体,而while有可能一次循环体都不执行。 什么是死循环?
死循环是编码员在编码过程中出现的逻辑错误,解释程序没有办法发现该类错误。只能靠编码员自己去发现。
死循环的概念:当循环条件永远为true或者是循环结构中没有去改变循环条件时发生死循环。
比如以下代码,就是一个典型的死循环:
++n; }
循环体中并没有改变循环条件,所以该条件会永远为true(真),死循环通常会导致程序挂起,严重的可能会导致程序崩溃。
避免死循环的常用方法就是当某个变量满足一定条件时候利用关键字 break 跳出循环,可以象下面这样来实现:
While(value) { ++n If(n==9) Break; }
转向语句 break 与 continue:
Break语句可以出现在任何循环结构中包括switch结构,它的作用是跳出循环结构。从循环之后的第一条语句开始执行。上面已经介绍过该语句了。
Continue语句,该语句与break不同的是它并不会跳出循环结构,而是继续执行该循环结构的下一次。也就是从新判断条件是否为true。以下是一个简单的continue应用的例子:
For(i=0;i<10;++i) {
If(i==9) Continue; }
以上代码可以可以实现当i等于9的时候把控制从新交给判断条件。以上代码的continue其实是多余的,因为只是在最后一次循环continue得到执行的机会,之后则立即退出循环。
第八章:javascript中的内置对象与程序库
Math对象:
该对象属于javascript的内置对象,包含了数学常数与函数。 如何通过Math对象来生成随机数?
可以通过Math.random()来生成随机数,该方法不接收任何参数。Math.random()返回0-1之间的随机小数。 With关键字:
With关键字可以节省代码量。With可以指定一个对象名称,并且包含被扩在大括号内部的语句块。块内的属性与方法如果没有明确指定对象的话,都将认为是with指定对象的属性与方法。
日期对象Date:
Date属于javascript内置对象,可以为日期与时间的处理提供方便。Date对象没有任何属性。
Date对象的实例化:
可以通过new关键字来派生一个Date对象,可以指定构造参数。如果不指定构造参数的话,当前时间将会被存储在Date对象里。 第三方程序库:
使用第三方程序库的好处是,使用最少的代码实现最复杂的功能。第三方程序库实际上是有些其他脚本编写者写的.js文件,我们可以直接把该文件保存到站点目录然后直接用
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务