ajax01ajaxjavascript教程_第1页
ajax01ajaxjavascript教程_第2页
ajax01ajaxjavascript教程_第3页
ajax01ajaxjavascript教程_第4页
ajax01ajaxjavascript教程_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Javascript教程作者:金云龙。坦克大战:/1. Aptana插件安装1.1. Aptana插件简介l Aptana是一个非常强大,开源,JavaScript-focused的AJAX开发IDE。l 它的特点包括:n JavaScript,HTML,CSS语言的Code Assist功能。n Outliner(大纲):显示JavaScript,HTML和CSS的代码结构。l 支持各种js框架n jQueryn Extn Dojon Prototypen Yahoo User Interface1.2. Aptana插件安装1.2.1. 制作离线Aptana插件安装包l 下载Aptana的eclipse插件版:l 解压缩下载的压缩包,得到一个aptana_update_024747的文件夹l 进入到该文件夹中,只保留features和plugins两个文件夹,其余所有内容全部删除。上图中,选中部分删除!l 在当前文件夹下,右键新建一个文件夹,将其命名为eclipse。l 将features和plugins两个文件夹,移动到eclipse文件夹中。l 到此,离线Aptana插件安装包制作完毕。1.2.2. 安装方案一:适用于myeclipse8.5以上版本及eclipse3.2以上版本(不包含4.2版本)l 进入到myeclipse或eclipse安装目录中l 再进入到MyEclipse 10文件夹中上图中,被选中的文件夹dropins,是专门用来安装离线插件包的!l 进入到dropins文件夹中,将制作好的离线Aptana插件安装包copy到此文件夹中。1.2.3. 安装方案二:适用于myeclipse8.5以下版本及eclipse3.2以上版本(不包含4.2版本)l 将制作好的离线Aptana插件安装包copy至本地磁盘的任意目录下(目录中不能包含中文和空格,建议copy到myeclipse或eclipse安装目录中)。l 进入到myeclipse或eclipse安装目录中。Myeclipse:eclipse:l 在myeclipse或eclipse安装目录中,右键新建一个文件夹,命名为links。l 进入到新建的links文件夹中,右键新建一个文本文档,并编辑其内容。“path=”后面的内容为离线Aptana插件安装包的路径,并将“”修改为“/”或“”。l 再将编辑好的文本文档的名称,修改为“aptana.link”(文件的名字自定义,不能包含中文及特殊字符;后缀名为“.link”)。1.2.4. 验证Aptana插件安装是否成功l 启动myeclipse或eclipse。l 验证方式一:myeclipse:eclipse:l 验证方式二:myeclipse:eclipse:1.2.5. 配置Aptana插件l 配置Aptana插件支持的浏览器:(myeclipse10版本后的不能支持火狐浏览器)l 配置Aptana插件代码提示:l 设置Aptana插件在myeclipse或eclipse启动时,是否显示主页:l 设置HTML文件、JS文件默认编辑器:l 设置新建HTML文件的默认编码集:2. javascript入门2.1. javascript发展历史l 在1995年由Netscape(网景)公司推出LiveScript。在此之前,没有所谓的前端技术。所有的处理都需要由服务器端进行操作。当时的目的是同时在客户端和服务器端使用。l 由Netscape(网景)公司联合SUN公司完善LiveScrip。此时, Netscape(网景)公司将LiveScript更名为JavaScript。目的是利用Java语言的流行。l 微软在推出IE3.0时,使用了JavaScript的克隆版本,Jscript。l 此时,JavaScript拥有多个版本:版本不统一的问题出现!l 在1997年,JavaScript 1.1由欧洲计算机制造商协会定义。此举,只为JavaScript语言定制统一的语言版本。该全新版本的推出,更名为ECMAScript。该版本由Netscape、Sun、微软等共同定义。l 微软的IE浏览器产品的推广,间接推广了JavaScript。n JavaScript脚本语言已经成为浏览器的必要组件n JavaScript语言的版本问题越加突出l JavaScript语言的版本不统一问题至今仍未解决!2.2. javascript的核心组成部分l ECMAScriptn ECMAScript是一种脚本语言的标准,ECMA-262标准。n 该标准不仅限于JavaScript语言使用,例如ActionScript语言中的标准也为ECMA-262标准。n ECMAScript 描述了以下内容:语法、类型、语句、关键字、保留字、运算符和对象。l BOM:全称: Browser Object Model,译为浏览器对象模型。l DOM:全称: Document Object Model,译为文档对象模型。2.3. 在HTML或JSP页面中如何使用javascript脚本语言l 可以在HTML页面中的任何位置,使用标签来插入JavaScript。l 在HTML页面中的不同位置,插入JavaScript。执行地效果各不相同(执行顺序是自上而下)。l script标签属性说明:n type:text/javascript,指定使用的脚本语言。n language:JavaScript,也是指定使用的脚本语言。弃用!n src:载入外部JavaScript脚本代码(路径可以是绝对路径和相对路径)。2.4. ECMAScript入门l 区分大小写:与Java一样。变量、函数名、运算符以及其他一切东西都是区分大小写的。l 变量是弱类型的:与Java不一样。ECMAScript中的变量无特定的类型,定义变量时只用var 运算符,可以将它初始化为任意的类型。变量的类型取决于给变量赋值的内容。l 每行结尾的分号可有可无:与Java不一样。如果一条语句的结尾没有分号表明结束的话,前提是这样没有破坏代码的语义。最好的编写代码习惯是加入分号。l 注释:与Java一样。支持”/”、”/*/”这几种常见的注释方式。l 括号表明代码块:与Java一样。2.5. BOM简介2.5.1. 浏览器内置对象的介绍l Navigator对象:浏览器对象,包含了正在使用的 Navigator 的版本信息。反映了当前使用的浏览器的资料。JavaScript 客户端运行时刻引擎自动创建 navigator 对象。l Window对象:表示的是浏览器窗口,最顶层的对象, window的属性对应于整个窗口 。n Document对象:文档对象是JavaScript中window和frames对象的一个属性,是显示于窗口或框架内的一个文档。描述当前窗口或指定窗口对象的文档。它包含了文档从到的内容。u Links对象:是一个数组,包含了文档中所有连接标记(包含href属性的标记和标记段里的标记),按照在文档中的次序,从0开始给每个连接标记定义了一个下标。u Archors对象:是一个数组,包含了文档中所有锚标记(包含name属性的标记),按照在文档中的次序,从0开始给每个锚标记定义了一个下标。u Forms对象:是一个数组,包含了文档中所有的表单()。要引用单个表单,可以用document.formsx,但是一般来说,人们都会这样做:在标记中加上“name=”.“”属性,那么直接用“document.”就可以引用了。u Images对象:图片对象document.images是一个数组,包含了文档中所有的图片()。n Frame对象:是window对象。用最容易理解的话说,每一个HTML文件占用一个window对象,包括定义框架的网页(“框架网页”)。n Location对象:地址对象它描述的是某一个窗口对象所打开的地址。* window.location = “链接地址”;n History对象:历史对象包含了用户已浏览的URL的信息,是指历史对象指浏览器的浏览历史。* back()后退,跟按下“后退”键是等效的。* forward()前进,跟按下“前进”键是等效的。2.5.2. 浏览器内置对象的特点l 每个对象有它自己的属性、方法和事件。l 对象的属性是反映该对象某些特定的性质的。例如:字符串的长度、图像的长宽等等。l 对象的方法能对该对象做一些事情。例如:表单的“提交”(Submit)等等。l 对象的事件就能响应发生在对象上的事情。例如:提交表单产生表单的“提交事件”。2.6. DOM简介2.6.1. W3C对DOM的定义2.6.2. DOM的特点:l DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。l DOM可以用于任何编程语言。l DOM技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们的属性,增加一个元素等, DOM技术使得页面的交互性大大地增强。l DOM实际上是以面向对象方式描述的文档模型。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。l DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档。l DOM 被分为不同的部分(核心、XML及HTML)和级别(DOM Level 1/2/3)。2.6.3. DOM规范级别l DOM Level 1 DOM Level 1 是W3C于1998年10 月提出的第一个正式的 W3C DOM规范。它由DOM Core 和DOM HTML两个模块构成。前者提供了基于 XML的文档的结构图,以方便访问和操作文档的任意部分;后者添加了一些 HTML 专用的对象和方法,从而扩展了 DOM Core。DOM Level 1 的主要目标是合理规划文档的结构。它的最大缺陷就是忽略了事件模型,其中包括NN2 和IE3 中最简单的事件模型。l DOM Level 2 DOM Level 2 基于DOM Level 1 并扩展了 DOM Level 1,添加了鼠标和用户界面事件、范围、遍历(重复执行 DOM文档的方法)、XML命名空间、文本范围、检查文档层次的方法等新概念,并通过对象接口添加了对CSS 的支持。同时引入几个新模块,用以处理新的接口类型,包括: DOM视图描述跟踪文档的各种视图(即CSS 样式化之前和CSS 样式化之后的文档)的接口; DOM事件描述事件的接口; DOM样式表描述处理基于CSS 样式的接口; DOM遍历和范围描述遍历和操作文档树的接口。l DOM Level 3 DOM Level 3 引入了以统一的方式载入和保存文档的方法(包含在新模块 DOM Load and Save 中)以及验证文档(DOM Validation)的方法,从而进一步扩展了 W3C DOM规范。在DOM Level 3 中,DOM Core 被扩展为支持所有的 XML 1.0 特性,包括XML Infoset、XPath和XML Base,从而改善了DOM对XML的支持。l DOM Level 0 DOM Level 0 不是 W3C 标准。而仅仅是对在 Netscape Navigator 3.0 和 Microsoft Internet Explorer 3.0 中的等价功能性的一种定义。DOM Level 0 其实就是定义的一些Document对象的属性和方法。2.6.4. DOM的组成部分l 核心DOM:指定类属类型,将带有标记的文档看成树状结构并据此对文档进行相关操作。l HTML DOM:提供用于操作HTML 文档以及类似于JavaScript 对象模型语法的功能部件,在核心DOM的基础上支持对所有HTML 元素对象进行操作。l DOM CSS:提供脚本编程实现CSS 的接口。3. javascript基础3.1. 函数3.1.1. 函数的定义所谓函数,本质上是一种代码的分组形式。我们可以通过这种形式赋予某组代码一个名字,便于日后重用时调用。一般来说,函数声明通常由以下几部分组成:l function 子句l 函数名称l 函数所需的参数,参数之间用逗号分隔l 函数索要执行的代码块,我们称之为函数体l return 子句。函数通常都会有返回值,如果某个函数没有显式的返回值,我们就会默认它的返回值是undefinedl 一个函数只能有一个返回值,如果我们需要同时返回多个值,可以考虑将其放进一个数组里,以数组元素的形式返回。3.1.2. 参数(形参与实参)l 形参:出现在函数定义文法中的参数列表是函数的形式参数,简称形参。l 实参:函数调用时实际传入的参数是函数的实际参数,简称实参。l 一般情况下,形参与实参的个数是相同的。但在JavaScript中并不强求这一点,在特殊情况下,函数的形参和实参的个数可以不相同。这种情况下使用Arguments 对象。3.1.3. javascript定义函数的三种方式l 普通方式n 语法:function 函数名(参数) 函数体 function add(a,b)return a+b;alert(add(3,4);l 构造函数方式n 语法:var 变量名 = new Function(参数,函数体);var add = new Function(a,b,return a+b;);alert(add(2,4,1);l 直接量定义函数n 语法:var 变量名 = function(参数) 函数体 var result = function(a,b)return a+b;alert(result(1,2);3.2. javascript事件3.3. ECMAScript3.3.1. 变量ECMAScript中的变量是用var运算符(variable的缩写)加变量名定义的。例如:var test = hello;在这个例子中,声明了变量test,并把它的值初始化为”hello”。由于ECMAScript是弱类型的,所以解释程序会为test自动创建一个字符串值,无需明确的类型声明。还可以用一个var语句定义两个或多个变量:var test1 = hello , test2 = world ;用一个var也可以定义两个或多个具有不同类型的变量:var test = hello , age = 25 ;与Java不同的是,ECMAScript中的变量并不一定要初始化:var test;此外,EMCAScript中,一个变量可以存放不同类型的值,这是弱类型的优势:var test = hello ; alert(test)/输出 hellotest = 55 ;alert(test)/输出 55但是好的编码习惯是始终存放相同类型的值。ECMAScript另一个有趣的是在使用变量之前不必声明:var test1 = hello ; test2 = test1 + world ; alert(test2)/输出 hello world在上面这段代码中,变量test2并没有用var运算符定义,但可以使用,这里只是插入了它,就好像声明过了一样。ECMAScript的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。这是该语言的便利之处,最好的习惯是像使用其他程序设计语言一样,总是声明所有变量。3.3.2. 关键字ECMAScript支持一套关键字,这些关键字标识了ECMAScript语句的开始和结尾。关键字是保留的,不能用作变量名或函数名。3.3.3. 保留字ECMAScript还定义了一套保留字,保留字在某种意义上是为将来的关键字而保留的单词。3.3.4. 原始值和引用值在ECMAScript中,变量可以存放两种类型的值,即原始值和引用值。n 原始值,是存储在栈中的简单数据段,也就是说,它们的值直接存储在变量访问的地址。n 引用值,是存储在栈中的对象,也就是说,存储在变量出的值是一个指针,指向存储对象的内存处。3.3.5. 原始类型EMCAScript有五种原始类型,即Undefined、Null、Boolean、Number和String。. typeof运算符typeof运算符有一个参数,即要检查的变量或值。例如:var temp = test string ; alert(typeof temp)/输出 “string”alert(typeof 95)/输出 “Number”对变量或值调用typeof运算符将返回下列值之一:n “undefined”,如果变量是Undefined类型。n “boolean”,如果变量是Boolean类型。n “number”,如果变量是Number类型。n “string”,如果变量是String类型。n “object”,如果变量是一种引用类型或Null类型的。. Undefined类型Undefined类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。var temp ; /temp的类型就是Undefined类型值得注意的是,值Undefined并不同于未定义的值。但是,typeof运算符并不真正区分这两种值。var temp1 ;alert(typeof temp1) ; /输出 “undefined”alert(typeof temp2) ; /输出 “undefined”这里的temp2变量是未被声明过的。如果对temp2使用除typeof之外的运算符会报错,原因是其他运算符只能用于已声明的变量上。当函数无明确返回值时,返回的也是值undefined。. Null类型Null类型也只有一个值null,即它的字面量。值undefined实际上是从值null派生来的,因此ECMAScript把它们定义为相等的。alert(null = undefined)/输出 true尽管这两个值相等,但它们的含义不同。undefined是声明了变量但未对其初始化,null则用于表示尚未存在的对象。. Boolean类型Boolean类型是ECMAScript中最常用的类型之一。它有两个值true和false。即使false不等于0,0也可以在必要时被转换成false。. Number类型(不好理解)Number类型是ECMAScript中最为特殊的。这种类型既可以表示32位整数,也可以表示64位的浮点数。整数也可以被表示为八进制或十六进制的字面量。八进制字面量的首数字必须是0,其后的数字可以是任何八进制数字(0到7),如下:var iNum = 070 ; /070 is equal to 56 in decimal要创建十六进制的字面量,首位数字必须为0,其后接字母x,然后是任意的十六进制数字(0到9和A到F)。这些字母可以是大写,也可以小写。例如:var iNum = 0x1f ; /0x1f is equal to 31 in decimal注:尽管所有整数都可表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。要定义浮点值,必须包括小数点和小数点后的一位数字。这被看作浮点数字面量。例如:var fNum = 5.0 ;注:浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。对于非常大或非常小的数,可以用科学记数法表示浮点值。采用科学记数法,可以把一个数表示为数字(包括十进制数字)加e(或E),后面加乘以10的倍数。几个特殊值也被定义为Number类型的。前两个是Number.MAX_VALUE和Number.MIN_VALUE,它们定义了Number值集合的外边界。所有ECMAScript数都必须在这两个值之间。不过计算生成的数值结果可以不落在这两个数之间。当计算生成的数大于Number.MAX_VALUE时,它将被赋予值Number.POSITIVE_INFINITY,意味着不再有数字值。同样,生成的数值小于Number.MIN_VALUE的计算也会被赋予值Number.NEGATIVE_INFINITY,也意味着不再有数字值。如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。事实上,有专门的值表示无穷大,即infinity。Number.POSITIVE_INFINITY的值为infinity,Number.NEGATIVE_INFINITY的值为-infinity。由于无穷大数可以是正数也可以是负数,所以可用一个方法判断一个数是否是有穷的。可以对任何数调用isFinit()方法,以确保该数不是无穷大。最后一个特殊值是NaN,表示非数(Not a Number)。这种情况发生在类型(Stirng、Boolean等)转换失败时。与无穷大值一样,NaN也不能用于算术计算。NaN的另一个奇特之处在于,它与自身不想等。出于这种原因,不推荐使用NaN值本身。函数isNaN()会做得很好。. String类型String类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示。字符串字面量是由双引号或单引号声明的。而Java则是用双引号声明字符串,用单引号声明字符。但是,由于ECMAScript没有字符类型,所以可使用这两种表示法中的任何一种。下面的两行代码都有效:var sColor1 = blue ; var sColor2 = blue ;String类型还包括几种字符字面量:字 面 量含 义n换行t制表符b空格r回车f换页符反斜杠单引号双引号0nnn 八进制代码nnn(n是0到7中的一个八进制数字)表示的字符xnn 十六进制代码nn(n是0到F中的一个十六进制数字)表示的字符unnnn十六进制代码nnnn(n是0到F中的一个十六进制数字)表示的Unicode字符3.3.6. 转换所有程序设计语言最重要的特征之一是具有进行类型转换的能力,ECMAScript给开发者提供了大量简单的转换方法。. 转换成字符串ECMAScript的Boolean值、数字和字符串,这三种主要的原始值都有toString()方法,可以把它们的值转换成字符串。注:ECMAScript定义所有对象都有toString()方法,无论它是伪对象还是真的对象。String类型属于伪对象,所以它一定有toString()方法。Boolean类型的toString()方法只是输出”true”或”false”。Number类型的toString()方法比较特殊,有两种模式,即默认模式和基模式。在默认模式中,无论最初采用什么表示法声明数字,Number类型的toString()方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出时都是十进制形式的。采用Number类型的toString()方法的基模式,可以用不同的基输出数字(二进制的基是2、八进制的基是8、十六进制的基是16)。基只是要转换成的基数的另一种叫法,它是toString()方法的参数:var iNum = 10 ;alert(iNum.toString(2) ; /输出”1010”alert(iNum.toString(8) ; /输出”12”alert(iNum.toString(16) ; /输出”A”注:对数字调用toString(10)与调用toString()相同,它们返回的都是该数字的十进制形式。. 转换成数字ECMAScript提供了两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat()。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法才能正确运行;对其他类型返回的都是NaN。. 强制类型转换ECMAScript中有三种可用的强制类型转换:n Boolean(value) 把给定的值转换成Boolean类型;n Number(value) 把给定的值转换成数字(可以是整数或浮点数);n String(value) 把给定的值转换成字符串。当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true;如果该值是空字符串、数字0、undefined或null,它将返回false。Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值。如果字符串能被完整地转换,Number()将判断是调用parseInt()方法还是parseFloat()方法。用法结果Number(false) 0Number(true) 1Number(undefined) NaNNumber(null) 0Number(5.5) 5.5Number(56) 56Number(5.6.7) NaNNumber(new Object() NaNNumber(100) 100 最后一种强制类型转换方法Stirng()是最简单的,因为它可把任何值转换成字符串。强制类型转换方法String()和调用toString()方法的唯一不同之处在于,对null或undefined值强制类型转换可以生成字符串而不引发错误。3.3.7. 引用类型引用类型通常叫做类(class)。也就是说,遇到引用值时,所处理的就是对象。注:ECMAScript并不真正具有类。ECMAScript定义了”对象定义”,逻辑上等价于其他程序设计语言中的类。对象是由new运算符加上要实例化的类的名字创建的,例如:var o = new Object() ;这种语法与Java语言相似,不过如果没有参数时,可以省略括号:var o = new Object ;注:尽管括号不是必需的,但为避免混乱,最好使用括号。. Object类ECMAScript中的Object类与Java中的java.lang.object相似,ECMAScript中的所有类都由这个类继承而来,Object类中的所有属性和方法都会出现在其他类中。Object类具有下列属性:n Constructor 对创建对象的函数的引用(指针)。对于Object类,该指针指向原始的object()函数。n Prototype 对该对象的对象原型的引用。对于所有的类,它默认返回Object对象的一个实例。Object类的几个方法:n HasOwnPrototype(prototype) 判断对象是否有某个特定的属性。必须用字符串指定该属性(o.HasOwnPrototype(“name”))。n IsPrototypeOf(object) 判断对象是否为另一个对象的原型。n PropertyIsEnumerable(property) 判断给定的属性是否可以用for.in语句进行枚举。n ToString() 返回对象的原始字符串表示。n ValueOf() 返回最适合该对象的原始值。对于许多累,该方法返回的值都与toString()的返回值相同。. Boolean类Boolean类是Boolean原始类型的引用类型。要创建Boolean对象,只需要传递Boolean值作为参数:var oBooleanObject = new Boolean(true) ;Boolean对象将覆盖object类的valueOf()方法,返回原始值,即true或false。ToString()方法也会被覆盖,返回字符串”true”或”false”。在ECMAScript中很少使用Boolean对象。var oFalseObject = new Boolean(false) ;var bResult = oFalseObject & true ; /输出 true在这段代码中,用false值创建Boolean对象。然后用这个值与原始值true进行AND操作。在Boolean运算中,false和true进行AND操作的结果是false。不过,在这行代码中,计算的是oFalseObject,而不是它的值false。在Boolean表达式中,所有对象都会被自动转换为true,所以oFalseObject的值是true。然后true再与true进行AND操作,结果为true。. Number类Number类是Number原始类型的引用类型:var oNumberObject = new Number(55) ;所有特殊值都是Number类的静态属性。要得到数字对象的Number原始值,只需要使用valueOf()方法:var iNumber = oNumberObject.valueOf() ;Number类处理数值的专用方法:n toFixed()方法返回的是具有指定位数小数的数字的字符串表示。toFixed()方法能表示具有0到20位小数的数字,超出这个范围的值引发错误。例如:var oNumberObject = new Number(99) ;alert(oNumberObject.toFixed(2) ;/输出 “99.00”n toExponential()是与格式化数字相关的,它返回的是用科学记数法表示的数字的字符串形式。例如:var oNumberObject = new Number(99) ;alert(oNumberObject.toExponential(1) ; /输出 “9.9e+1”n toPrecision()方法根据最有意义的形式来返回数字的预定形式或指数形式。toPrecision()方法会对数进行舍入,从而得到尽可能接近真实值的数。例如:var oNumberObject = new Number(99) ;alert(oNumberObject.toPrecision(1) ; /输出 “1e+2”toFixed()、toExponential()和toPrecision()方法都会进行舍入操作,以便使用正确的小数位数正确地表示一个数。注:与Boolean对象相似,Number对象也很重要,不过应该少用这种对象,以避免发生潜在的问题。只要可能,都使用数字的原始表示法。. String类String类是String原始类型的对象表示法,是下列方式创建的:var oStringObject = new String(hello world) ;String对象的valueOf()方法和toString()方法都会返回String型的原始值:alert(oStringObject.valueOf() = oStringObject.toString() ; /输出 “true”具体单独讨论!. Instanceof运算符在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回”object”。ECMAScript引入了另一个Java运算符instanceof来解决这个问题。instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof方法要求开发者明确地确认对象为某特定类型。例如:var oStirngObject = new String(hello world) ;alert(oStringObject instanceof String) ; /输出 “true”3.3.8. 运算符. 一元运算符l deletedelete运算符删除对以前定义的对象属性或方法的引用。delete运算符不能删除开发者未定义的属性和方法。l voidvoid运算符对任何值都返回undefined。该运算符通常用于避免输出不应该输出的值。l 前增量/前减量运算符与Java中的前增量/前减量运算符的用法一致。l 后增量/后减量运算符与Java中的前增量/前减量运算符的用法一致。l 一元加法和一元减法与Java中的一元加法和一元减法的用法一致。. 位运算符l 位运算NOT位运算NOT由否定号()表示,它是ECMAScript中为数不多的与二进制算术有关的运算符之一。位运算NOT是三步处理过程:1) 把运算数转换成32位数字;2) 把二进制形式转换成它的二进制反码;3) 把二进制反码转换成浮点数。var iNum1 = 25 ;/25 is equal to 00000000000000000000000000011001var iNum2 = iNum1 ;/convert to 11111111111111111111111111100110alert(iNum2) ;/输出 “-26”l 位运算AND位运算AND由和号(&)表示,直接对数字的二进制形式进行运算。l 位运算OR位运算OR由符号(|)表示,直接对数字的二进制形式进行运算。l 位运算XOR位运算XOR由符号()表示,直接对数字的二进制形式进行运算。XOR与OR不同。l 左移运算左移运算由两个小于号表示()表示。它将把32位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算恰好与左移运算相反。l 无符号右移运算无符号右移由三个大于号()表示,它将把无符号32位数中的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。对于负数,无符号右移运算用0填充所有空位。. Boolean运算符l 逻辑NOT运算符在ECMAScript中,逻辑NOT运算符与Java中的逻辑NOT运算符相同,都由感叹号(!)表示。逻辑NOT运算符返回的一定是Boolean值。n 如果运算符是对象,返回false;n 如果运算符是数字0,返回true;n 如果运算符是0以外的任何数字,返回false;n 如果运算符是null,返回true;n 如果运算符是NaN,返回true;n 如果运算符是undefined,发生错误。l 逻辑AND运算符在ECMAScript中,逻辑AND运算符用双和号(&)表示:逻辑AND运算符的运算数可以是任何类型,不止是Boolean值。n 如果一个运算数是对象,另一个是Boolean值,返回该对象;n 如果两个运算数都是对象,返回第二个对象;n 如果某个运算数是null,返回null;n 如果某个运算数是NaN,返回NaN;n 如果某个运算数是undefined,发生错误。var boolean ;var bResult = (boolean & bUnkown);alert(bResult);以上代码,如果boolean变量的值是true的话,第三行的代码会发生错误。原因是在第二行AND运算符运算时,boolean为true会继续计算bUnkown变量。而bUnkown是未定义的,所以结果是报错。如果boolean变量的值是false的话,第三行的代码就不会报错。原因是在第二行AND运算符运算时,boolean为false不会再继续计算bUnkown变量。所以无论bUnkown变量是否未定义都不会报错,但也不会得到true结果。l 逻辑OR运算符ECMAScript中的逻辑OR运算符与Java中的相同,都由双竖线(|)表示。下面的真值描述了逻辑OR运算符的行为:与逻辑AND运算符相似,如果某个运算符不是Boolean值,逻辑OR运算符并不一定返回Boolean值:n 如果一个运算符是对象,另一个是Boolean值,返回对象;n 如果两个运算符都是对象,返回第一个对象;n 如果某个运算符是null,返回null;n 如果某个运算符是NaN,返回NaN;n 如果某个运算符是undefined,发生错误。. 乘性运算符l 乘法运算符乘法运算符由星号(*)表示。在处理特殊值时,ECMAScript中的乘法还有一些特殊行为:n 如果运算数都是数字,执行常规的乘法运算,即两个正数或两个负数相乘结果为正数;两个运算数符号不同,结果为负数。如果结果太小或太大,那么生成的结果就是infinity或-infinity。n 如果某个运算数是NaN,结果为NaN。n Infinity乘以0,结果为NaN。n Infinity乘以0以外的任何数字,结果为Infinity或-Infinity,由第二个运算数的符号决定。n Infinity乘以Infinity,结果为Infinity。l 除法运算符除法运算符由(/)表示。与乘法运算符类似,对于特殊的值,除法运算符也有特殊行为:n 如果运算数都是数字,执行常规的乘法运算,即两个正数或两个负数相乘结果为正数;两个运算数符号不同,结果为负数。如果结果太小或太大,那么生成的结果就是infinity或-infinity。n 如果某个运算数是NaN,结果为NaN。n Infinity乘以0,结果为NaN。n Infinity乘以0以外的任何数字,结果为Infinity或-Infinity,由第二个运算数的符号决定。n Infinity乘以Infinity,结果为Infinity。l 取模运算符取模(余数)运算符由百分号(%)表示。与其他乘性运算符相似,对于特殊的值,取模运算符也有特殊行为:n 如果运算数都是数字,执行常规的算术除法运算,返回除法运算得到的余数。n 如果被除数是Infinity,或者除数是0,结果为NaN。n Infinity被Infinity除,结果为NaN。n 如果除数是无穷大的数,结果为被除数。. 加性运算符l 加法运算符在处理特殊值时,加法运算符也有一些特殊方式:n 某个运算数是NaN,结果为NaN。n Infinity加Infinity,结果为Infinity。n -Infinity加-Infinity,结果为-Infinity。n Infinity加-Infinity,结果为NaN。n +0加+0,结果为+0.n -0加+0,结果为+0.n -0加-0,结果为-0.n 如果两个运算符都是字符串,把第二个字符串连接到第一个字符串上。n 如果只有一个运算符是字符串,把另一个运算符转换成字符串,结果是两个字符串连接成字符串。l 减法运算符与加法运算符一样,减法运算符也有特殊的规则:n 如果两个运算数都是数字,将执行算术减法,返回结果。n 某个运算符是NaN,结果为NaN。n Infinity减Infinity,结果为NaN。n -Infinity减-Infinity,结果为NaN。n Infinity减-Infinity,结果为Infinity。n -Infinity减Infinity,结果为-Infinity。n +0减+0,结果为+0.n -0减-0,结果为-0.n 某个运算数不是数字,结果为NaN。. 关系运算符关系运算符小于()、小于等于(=)执行的是两个数的比较运算,比较方式与算术比较运算相同。不过,对于两个字符串应用关系运算符,比较的结果则不同。对于字符串,第一个字符串中的每个字符的代码都会与第二个字符串中对应位置上的字符的代码进行数值比较。完成这个比较操作后,返回一个Boolean值。由于所有大写字母的代码都小于所有小写字母的代码,所以在比较时,需要将两个字符串都转换成相同的大小写形

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论