T1:Javascript高级编程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《T1:Javascript高级编程课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- T1 Javascript 高级 编程 课件
- 资源描述:
-
1、Version ACCP5.0主讲人主讲人:童金浩童金浩Mail: Web:www.hf- QQ:157297480Page 2/27目标目标v了解了解ECMAScriptv Dom操作基础与高级应用操作基础与高级应用 v javascript中的面向对象中的面向对象 v json语法详解语法详解 v原生原生Ajax在在javascript中的应用中的应用 Page 3/27了解了解ECMAScriptPage 4/27一、一、 了解了解ECMAScriptv 历史历史 1995年年12月月升阳公司升阳公司与与网景通讯公司网景通讯公司一起引入了一起引入了JavaScript。1996年年3月,
2、网景通讯公司发表了支持月,网景通讯公司发表了支持JavaScript的的网景导航者网景导航者2.0。由于。由于JavaScript作为网页的客户面脚本语言非常成功,作为网页的客户面脚本语言非常成功,微软微软于于1996年年8月引入月引入了了Internet Explorer3.0,这个软件支持一个,这个软件支持一个“约约”与与JavaScript相容的相容的JScript。 1996年年11月网景通讯公司将月网景通讯公司将JavaScript提交给欧洲计算机制造商协会提交给欧洲计算机制造商协会进行标准化。进行标准化。ECMA-262的第一个版本于的第一个版本于1997年年6月被月被Ecma组织
3、采纳。组织采纳。 ECMAScript是由是由ECMA-262标准化的脚本语言的名称。标准化的脚本语言的名称。JavaScript和和JScript与与ECMAScript相容,但包含超出相容,但包含超出ECMAScript的功能。的功能。 Page 5/27v版本版本 至今为止有三个至今为止有三个ECMA-262版本(版本(edition)发)发表,版本表,版本3的修订版的修订版3.1和第和第4版正在工作中。版正在工作中。v各浏览器厂商对各浏览器厂商对ECMA的支持的支持 许多程序,尤其是许多程序,尤其是网页浏览器网页浏览器支持支持ECMAScript。浏览器中的。浏览器中的ECMAScri
4、pt实现添加实现添加了与了与文档对象模型文档对象模型的接口,可以通过脚本改变网的接口,可以通过脚本改变网页的内容、结构和样式。页的内容、结构和样式。Page 6/27vJavaScript之未来之未来 JS依旧是主流前端技术依旧是主流前端技术,正在研发的最新版本是正在研发的最新版本是ECMAScript4.0,加入了诸如加入了诸如Class,Interface,Package, Namespace以及以及Block等等。感觉等等。感觉JavaScript 2.0将会变成和将会变成和Java越来越接近的一越来越接近的一种语言(这里指的是种语言(这里指的是OO语法语法),类似于类似于ActionS
5、cript, Adobe已经捐献了已经捐献了ActionScript Virtual Machine 2的源代码与的源代码与Mozilla共同进行共同进行JavaScript 2.0 引擎的开发引擎的开发 Page 7/27v ECMAScript部分语法解析部分语法解析1. 基本数据类型基本数据类型 Page 8/27v Undefined型型 Undefined型即为未定义类型,用于不存在或型即为未定义类型,用于不存在或者没有被赋初始值得变量或对象的属性者没有被赋初始值得变量或对象的属性. 如下列语句定义变量如下列语句定义变量name为为Undefined型:型: var name; 定义
6、定义Undefined型变量后,可在后续的脚本代型变量后,可在后续的脚本代码中对其进行赋值操作,从而自动获得由其值决码中对其进行赋值操作,从而自动获得由其值决定的数据类型。定的数据类型。Page 9/27vNull型型 Null型数据表示空值,作用是表明数据空缺的型数据表示空值,作用是表明数据空缺的值,一般在设定已存在的变量值,一般在设定已存在的变量(或对象的属性或对象的属性)为为空时较为常用。区分空时较为常用。区分Undefined和和Null型数据比型数据比较麻烦,一般将较麻烦,一般将Undefined型和型和Null型等同对待。型等同对待。Page 10/27v 两者的区别:两者的区别:
7、1、null 数据类型数据类型 关键字关键字 null 不能用作函数或变量的名称。不能用作函数或变量的名称。 包含包含 null 的变量包含的变量包含“无值无值”或或“无对象无对象”。换句话说,。换句话说,该变量没有保存有效的数、字符串、该变量没有保存有效的数、字符串、 boolean、数组或对象。可以通过给一个变量赋、数组或对象。可以通过给一个变量赋 null 值来值来清除变量的内容清除变量的内容2、Undefined 数据类型数据类型 如下情况使返回如下情况使返回 undefined 值:值: 对象属性不存在,对象属性不存在, 声明了变量但从未赋值声明了变量但从未赋值 null是关键字;是
8、关键字;undefined是是Global对象的一个属性对象的一个属性Page 11/273、null是对象是对象(空对象空对象, 没有任何属性和方法没有任何属性和方法);undefined是是undefined类型的值。试试下面的代类型的值。试试下面的代码:码: document.writeln(typeof null); /return object document.writeln(typeof undefined); /return undefined 4、对象模型中,所有的对象都是、对象模型中,所有的对象都是Object或其子类或其子类的实例,但的实例,但null对象例外:对象例外:
9、 document.writeln(null instanceof Object); /return false Page 12/275、null“等值等值(=)”于于undefined,但不,但不“全等值全等值(=)”于于undefined: document.writeln(null = undefined); /return true document.writeln(null = undefined); /return false6、运算时、运算时null与与undefined都可以被类型转换为都可以被类型转换为false,但不等,但不等值于值于false: document.writ
10、eln(!null, !undefined); /return true,true document.writeln(null=false); /return false document.writeln(undefined=false); /return falsPage 13/27vFunction型型 Function型表示函数,可以通过型表示函数,可以通过new操作符和构操作符和构造函数造函数Function()来动态创建所需功能的函数,来动态创建所需功能的函数,并为其添加函数体。并为其添加函数体。var myFuntion = new Function() statements; P
11、age 14/27v如何扩展基础数据类型如何扩展基础数据类型 Demo1Page 15/27Dom操作基础与高级应用操作基础与高级应用Page 16/27DOM基础基础一、一、DOM基础基础 DOM给予开发者空前的对给予开发者空前的对HTML的访问能力的访问能力,并使开发者能将并使开发者能将HTML作作为为XML来处理和查看来处理和查看.DOM代表着由微软公司和代表着由微软公司和Netscape公司所引领公司所引领的动态的动态1.1、DOM的诞生的诞生 尽管尽管DOM很大程度上受到浏览器中动态很大程度上受到浏览器中动态HTML发展的影响发展的影响,但但W3C还还是将其首先应用于是将其首先应用于
12、XML.1.2、XML简介简介 XML(可扩展标记语言可扩展标记语言)是从是从SGML(标准通用语言标准通用语言)发展而来发展而来.SGML的的主要目的是定义使用标签来表示数据的标记语言的语法。主要目的是定义使用标签来表示数据的标记语言的语法。 基于基于SGML语言的最著名的实现就是原始的语言的最著名的实现就是原始的HTML。 SGML常用来定义针对常用来定义针对HTML的文档类型定义的文档类型定义(DTD),同时它也常用来同时它也常用来编写编写XML的的DTD。SGML的问题在于的问题在于,这允许出现一些奇怪的语法这允许出现一些奇怪的语法,这这让创建让创建HTML中的的解析器成为一个大难题中
13、的的解析器成为一个大难题. Page 17/27p 某些起始标签不允许出现结束标签。如:某些起始标签不允许出现结束标签。如:HTML中的中的.p 某些起始标签可以选择性的出现结束标签或者隐含了结束某些起始标签可以选择性的出现结束标签或者隐含了结束标签标签.如:如:HTML中的中的,当出现另一个当出现另一个时,便假设在时,便假设在这之前有一个结束标签这之前有一个结束标签p 某些起始标签要求必须出现结束标签某些起始标签要求必须出现结束标签.如如HTML中的中的p 标签可以以任何顺序嵌套。即使结束标签不按照起始标签标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的。如:的逆序出现
14、也是允许的。如:This is asample string 是正确的是正确的p 某些特性要求必须包含值。如:某些特性要求必须包含值。如:中的中的src特性特性.Page 18/27p某些特性不要求一定要有值。发某些特性不要求一定要有值。发中中的的nowrap属性属性p定义特性的两边有没有双引号都是可以的,所以定义特性的两边有没有双引号都是可以的,所以和和都是都是允许的允许的.以上种种问题导致了以上种种问题导致了SGML语言的解析器变成了一语言的解析器变成了一项艰巨的任务项艰巨的任务.以这些问题作为出发点。以这些问题作为出发点。XML逐渐逐渐进入我们的视线进入我们的视线.Page 19/27
15、XML去掉了之前许多开发人员头疼的去掉了之前许多开发人员头疼的SGML的随的随意语法。在意语法。在XML中,采用了如下的语法中,采用了如下的语法:p任何的起始标签都必须有一个结束标签任何的起始标签都必须有一个结束标签p可以采用另外一种简化语法可以采用另外一种简化语法(/),如:如:XML解解析器会将其翻译成析器会将其翻译成p标签必须按合适的顺序进行嵌套标签必须按合适的顺序进行嵌套p所有的特性都必须有值所有的特性都必须有值p所有的特性都必须在值的周围加上双引号所有的特性都必须在值的周围加上双引号 这些特征使得开发一个这些特征使得开发一个XML解析器要简便得多,解析器要简便得多,仅仅在仅仅在XML
16、出现后的前六年就衍生出多种不同的出现后的前六年就衍生出多种不同的语言语言,包括包括MathML、SVG、RDF、RSS、SOAP、XSLT,而同时也将而同时也将HTML改进为改进为XHTMLPage 20/27Dom操作基础与高级应用操作基础与高级应用Node接口也定义了一些所有节点类型都包含的属性和方法接口也定义了一些所有节点类型都包含的属性和方法.属性属性/方法方法类型返回类型类型返回类型说明说明nodeNameString节点的名字节点的名字nodeValueString节点的值节点的值nodeTypeNumber节点的类型常量值之一节点的类型常量值之一firstChildNode指向指
17、向childNodes列表列表的第一个节点的第一个节点lastChildNode指向指向childNodes列表列表中的最后一个节点中的最后一个节点childNodesNodeList所有子节点的列表所有子节点的列表previousSiblingNode指向前一个兄弟节点指向前一个兄弟节点,如果这个节点是第一个,如果这个节点是第一个,则返回为则返回为nullPage 21/27Dom操作基础与高级应用操作基础与高级应用属性属性/方法方法类型返回类型类型返回类型说明说明nextSiblingNode指向后一个兄弟节点,指向后一个兄弟节点,如果其已经是最后一个如果其已经是最后一个了,则返回为了,则
18、返回为nullhasChildNodesBoolean当当childNodes包含一包含一个或多个节点地,返回个或多个节点地,返回真真attributesNamedNodeMap包含了代表一个元素的包含了代表一个元素的特性的特性的Attr对象,仅用对象,仅用于于Element节点节点parentNodeNode得到当前节点的父节点得到当前节点的父节点appendChild(node) Node将将node添加到添加到childNodes的末尾的末尾Page 22/27Dom操作基础与高级应用操作基础与高级应用removeChild(node)Node从从childNodes中删除中删除node
19、replaceChild(newnode,oldnode)Node将将childNodes中的中的oldnode替换成替换成newnodeinsertBefore(newnode,refnode)Node在在childNodes中的中的refnode之前插入之前插入newnodePage 23/27Dom操作基础与高级应用操作基础与高级应用 Demo2: MyOffice里面的一个赋权限的例子里面的一个赋权限的例子Page 24/27 Demo3: 结合结合Ajax进行下拉列表框的三级联动进行下拉列表框的三级联动Page 25/27JavaScript中的面向对象编程中的面向对象编程Page
20、26/27Javascript面向对象编程面向对象编程1、面向对象语言的要求、面向对象语言的要求 (1)封装封装把相关的信息(无论数据或方法)存储在对象中的能力把相关的信息(无论数据或方法)存储在对象中的能力 (2)聚集聚集把一个对象存储在另一个对象内的能力把一个对象存储在另一个对象内的能力 (3) 继承继承由另一个类(或多个类由另一个类(或多个类)得来类的属性和方法的能力得来类的属性和方法的能力 (4)多态多态编写能以多种方法运行的函数或方法的能力编写能以多种方法运行的函数或方法的能力ECMAScript支持这些要求,因此可被看作面向对象的支持这些要求,因此可被看作面向对象的.2、对象的实例
21、化、对象的实例化 var obj = new Object() var ostringobj = new String()ECMAScript中也可以把()去掉中也可以把()去掉 var obj = new object; var ostringobj = new String;3、对象废除、对象废除 ECMAScript中有无用存储单元收集程序,意味着不必专门销毁对象中有无用存储单元收集程序,意味着不必专门销毁对象来释放内存来释放内存. 也可强制废除对象:也可强制废除对象:eg: var obj = new Object(); obj = null Page 27/27Javascript面
22、向对象编程面向对象编程5、对象类型、对象类型 5.1本地对象本地对象 Object Array Function String Boolean Number Date RegExp Error EvalError RangeError ReferenceError SyntaxError TypeError URIError 5.2 自定义对象自定义对象Page 28/27Javascript面向对象编程面向对象编程6、作用域、作用域 对对ECMAScript来说,讨论作用域几乎毫无意义。来说,讨论作用域几乎毫无意义。ECMAScript只存只存在一种作用域在一种作用域(公有作用域公有作用域)
23、 许多开发都制定了一个规约许多开发都制定了一个规约:私有的属性建议前后加下划线,如:私有的属性建议前后加下划线,如:obj._color_ = “red”;7、静态作用域并非静态的、静态作用域并非静态的 严格来说,严格来说,ECMAScript并没有静态作用域,不过,它可以给构造函并没有静态作用域,不过,它可以给构造函数提供属性和方法数提供属性和方法. 构造函数是函数,函数是对象,对象可以有属性构造函数是函数,函数是对象,对象可以有属性和方法。和方法。 如:如:function sayHi() alert(“hi”); ; sayHi.alternate = function() alert(
24、“hellow”);调用:调用:sayHi(); sayHi.alternate();Page 29/27JavaScript中的封装中的封装、关键字、关键字this 在在ECMAScript中,要掌握的最重要的概念之中,要掌握的最重要的概念之一是关键字一是关键字this的用法的用法. 它用在对象的方法中,关键字它用在对象的方法中,关键字this总是指向调用总是指向调用该方法的对象:该方法的对象: eg: var oCar = new Object(); oCar.color=“red”; oCar.showColor=function() alert(this.color); /等价于等价于
25、 oCar.color Page 30/27JavaScript中的封装中的封装说明:利有说明:利有this,可在任意多个地方重用同一个函数可在任意多个地方重用同一个函数.如:如:function ShowColor() alert(this.Color); var oCar1 = new Object(); oCar1.Color = “red”; oCar1.ShowColor = ShowColor; var oCar2 = new Object(); oCar2.Color = “blue”; oCar2.ShowColor=ShowColor; oCar1.ShowColor();
展开阅读全文