Hybrid App开发之JavaScript基础
前言:
前面学习了html和css的基本使用,今天开始学习JavaScript的使用。
什么是JavaScript
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与 HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互 作用。从而可以开发客户端的应用程序等;
具有以下几个基本特点:
脚本编写语言
JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解 释性语言,它提供了一个易的开发过程。它的基本结构形式与C、C++、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程 中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。
基于对象的语言
JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因 此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
简单性
JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 从而对于 学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。
安全性
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进 行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。
动态性
JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应, 是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。
跨平台性
JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就 可正确执行。从而实现了“编写一次,走遍天下”的梦想。 实际上JavaScript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需一个字处理软 件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情
基于上面的解释我们先来编写一个JavaScript程序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>这是一个JavaScript小程序</title> <script language="JavaScript"> alert('这是一个JavaScript小程序') </script> </head> <body> </body> </html>
根据上面的例子可以看出,JavaScript如同HTML标识语言一样, JavaScript程序代码是一些可用字处理软件浏览的文本,它在描述页面的HTML相关区域出现。 JavaScript代码由 <Script Language ="JavaScript">...</Script>说明。在标识<Script Language ="JavaScript">...</Script>之间就可加入JavaScript脚本。
JavaScript基本数据类型
JavaScript脚本语言同其它语言一样,有它自身的基本数据类型、表达式和算术运算符以及程序的基本框架结构。 JavaScript提供了四种基本的数据类型用来处理数字和文字, 而变量提供存放信息的地方, 表达式则可以完成较复杂的 信息处理。
1、基本数据类型
在JavaScript中四种基本的数据类型:数值(整数和实数)、字符串型(用“”号或‘’括起来的字符或数值)、布尔 型(使True或False表示)和空值。在JavaScript的基本类型中的数据可以是常量,也可以变量。由于JavaScript采 用弱类型的形式,因而一个数据的变量或常量不必首先作声明,而是在使用或赋值时确定其数据的类型的。当然也可以 先声明该数据的类型,它是通过在赋值时自动说明其数据类型的。
2、常量
整型常量
JavaScript的常量通常又称字面常量,它是不能改变的数据。其整型常量可以使用十六进制、八进制和十进制表示其值。
实型常量
实型常量是由整数部分加小数部分表示,如12.32、193.98 。可以使用科学或标准方法表示:5E7、4e5等。布尔值 布尔常量只有两种状态:True或False。 它主要用来说明或代表一种状态或标志,以说明操作流程。它与C++是不一 样的,C++可以用1或0表示其状态,而JavaScript只能用True或False表示其状态。
字符型常量
使用单引号(‘)或双引号(“)括起来的一个或几个字符。如 "This is a book of JavaScript " 、"3245" 、"ewrt234234" 等。空值 JavaScript中有一个空值null,表示什么也没有。如试图引用没有定义的变量,则返回一个Null值。特殊字符 同C语言一样,JavaScript中同样以有些以反斜杠(/)开头的不可显示的特殊字符。通常称为控制字符。
3、变量
变量的主要作用是存取数据、提供存放信息的容器。对于变量必须明确变量的命名、变量的类型、变量的声明及其变 量的作用域。
变量的命名
JavaScript中的变量命名同其计算机语言非常相似,这里要注意以下两点:
- 必须是一个有效的变量,即变量以字母开头,中间可以出现数字如test1、text2等。除下划线(-)作为连字符外,变量名称不能有空格、(+)、(-)、(,)或其它符号。
- 不能使用JavaScript中的关键字作为变量。 在JavaScript中定义了40多个类键字,这些关键是JavaScript内部使用的,不能作为变量的名称。如Var、int、 double、true不能作为变量的名称。 在对变量命名时,最好把变量的意义与其代表的意思对应起来,以免出现错误。
变量的类型 在JavaScript中,变量可以用命令Var作声明:例如var name='whoislcj';在JavaScript中,变量以可以不作声明,而在使用时再根据数据的类型来确其变量的类型: 例如name='whoislcj'
变量的声明及其作用域
JavaScript变量可以在使用前先作声明,并可赋值。通过使用var关键字对变量作声明。对变量作声明的最大好处就是 能及时发现代码中的错误;因为JavaScript是采用动态编译的,而动态编译是不易发现代码中的错误,特别是变量命 名的方面。 对于变量还有一个重要性──那就是变量的作用域。在JavaScript中同样有全局变量和局部变量。全局变量是定义在所有 函数体之外,其作用范围是整个函数;而局部变量是定义在函数体之内,只对其该函数是可见的,而对其它函数则是 不可见的。
表达式和运算符
1、表达式
在定义完变量后,就可以对它们进行赋值、改变、计算等一系列操作,这一过程通常又叫称一个叫表达式来完成, 可以说它是变量、常量、布尔及运算符的集合,因此表达式可以分为算术表述式、字串表达式、赋值表达式以及布尔表达 式等
2、运算符
运算符完成操作的一系列符号,在JavaScript中有算术运算符,如+、 -、 *、 /等;有比较运算符如!=、==等; 有逻 辑布尔运算符如!(取反)、|、||; 有字串运算如+ 、 +=等。
举例说明一下
<script language="JavaScript"> document.write("<div><p>"+name+"</p></div>"); var x,y; x=5; y=10; function plus(x,y) { return x+y; } var plusResult = plus(x, y); if(plusResult>15){ document.write("<div><p>x+y>"+ 15+"</p></div>"); }else{ document.write("<div><p>x+y="+ plusResult+"</p></div>"); } </script>
JavaScript程序构成
JavaScript脚本语言的基本构成是由控制语句、函数、对象、方法、属性等,来实现编程的。
一、程序控制流
-
if条件语句
-
For循环语句
-
while循环
-
break和continue语句
综合举例说明一下
<script language="JavaScript"> var maxCount = 5; var list = new Array(); if (maxCount >= 5) { for (var i = 0; i < maxCount; i++) { list.push(i); } while (list.length > 0) { var temp = list.pop(); document.write("<div><p>temp=" + temp + "</p></div>"); switch (temp) { case 0: document.write("<div><p>第一行</p></div>"); break; case 1: document.write("<div><p>第二行</p></div>"); break; case 2: document.write("<div><p>第三行</p></div>"); break; case 3: document.write("<div><p>第四行</p></div>"); break; case 4: document.write("<div><p>第五行</p></div>"); break; } } } </script>
二、函数
函数为程序设计人员提供了一个丰常方便的能力。通常在进行一个复杂的程序设计时,总是根据所要完成的功能, 将程序划分为一些相对独立的部分,每部分编写一个函数。从而,使各部分充分独立,任务单一,程序清晰,易懂、易 读、易维护。 JavaScript函数可以封装那些在程序中可能要多次用到的模块。并可作为事件驱动的结果而调用的程序。从 而实现一个函数把它与事件驱动相关联。这是与其它语言不样的地方。
1、JavaScript函数定义
Function 函数名 (参数,变元){ 函数体;. Return 表达式; }
说明:
- 当调用函数时,所用变量或字面量均可作为变元传递。
- 函数由关键字Function定义。
- 函数名:定义自己函数的名字。
- 参数表,是传递给函数使用或操作的值,其值可以是常量 ,变量或其它表达式。
- 通过指定函数名(实参)来调用一个函数。
- 必须使用Return将值返回。
- 函数名对大小写是敏感的。
2、函数中的形式参数
在函数的定义中,我们看到函数名后有参数表,这些参数变量可能是一个或几个。那么怎样才能确定参数变量的个 数呢?在JavaScript中可通过arguments .Length来检查参数的个数。
<script language="JavaScript"> function dealData(srcData, desData) { var number = arguments.length; return srcData + desData; } </script>
三、事件驱动及事件处理
1、基本概念
JavaScript是基于对象(object-based)的语言。这与Java不同,Java是面向对象的语言。而基于对象的基本特 征,就是采用事件驱动(event-driven)。它是在用形界面的环境下,使得一切输入变化简单化。通常鼠标或热键的动作 我们称之为事件(Event),而由鼠标或热键引发的一连串程序的动作,称之为事件驱动(Event Driver)。而对事件 进行处理程序或函数,我们称之为事件处理程序(Event Handler)。
2、事件处理程序
在JavaScript中对象事件的处理通常由函数(Function)担任。其基本格式与函数全部一样,可以将前面所介绍的 所有函数作为事件处理程序。 格式如下:
function 事件处理名(参数表){ 事件处理语句集; ……
}
3、事件驱动
JavaScript事件驱动中的事件是通过鼠标或热键的动作引发的。它主要有以下几个事件:
(1)单击事件onClick
当用户单击鼠标按钮时,产生onClick事件。同时onClick指定的事件处理程序或代码将被调用执行。
<script language="JavaScript"> function submitUserData() { } </script> <input type="submit" onclick="submitUserData()"/>
(2)onChange改变事件
当利用text或texturea元素输入字符值改变时发该事件,同时当在select表格项中一个选项状态改变后也会引 发该事件。
<script language="JavaScript"> function desTextAreaChanged() { var userTextArea = document.getElementById("userDes"); var userDesDiv=document.getElementById("userDesDiv"); userDesDiv.innerHTML="<div><p>" + userTextArea.value + "</p></div>"; } </script> <div> <textarea name="userDes" id="userDes" cols="50" rows="15" style="margin-top: 5pt" onchange="desTextAreaChanged()"/> </textarea> </div> <div id="userDesDiv"> </div>
(3)选中事件onSelect
当Text或Textarea对象中的文字被加亮后,引发该事件。
(4)获得焦点事件onFocus
当用户单击Text或textarea以及select对象时,产生该事件。此时该对象成为前台对象。
(5)失去焦点onBlur
当text对象或textarea对象以及select对象不再拥有焦点、而退到后台时,引发该文件,他与onFocas事件是 一个对应的关系。
(6)载入文件onLoad
当文档载入时,产生该事件。onLoad一个作用就是在首次载入一个文档时检测cookie的值,并用一个变量为其 赋值,使它可以被源代码使用。
(7)卸载文件onUnload
当Web页面退出时引发onUnload事件,并可更新Cookie的状态。
基于对象的JavaScript语言
JavaScript语言是基于对象的(Object-Based),而不是面向对象的(object-oriented)。之所以说它是一门 基于对象的语言,主要是因为它没有提供象抽象、继承、重载等有关面向对象语言的许多功能。而是把其它语言所创建的 复杂对象统一起来,从而形成一个非常强大的对象系统。 虽然JavaScript语言是一门基于对象的,但它还是具有一些面向对象的基本特征。它可以根据需要创建自己的对象,从而进一步扩大JavaScript的应用范围,增强编写 功能强大的Web文档。
一、对象的基础知识
1、对象的基本结构
JavaScript中的对象是由属性(properties)和方法(methods)两个基本的元素的构成的。前者是对象在实施其所需 要行为的过程中,实现信息的装载单位,从而与变量相关联;后者是指对象能够按照设计者的意图而被执行,从而与特定的函数相联。
2、引用对象的途径
一个对象要真正地被使用,可采用以下几种方式获得:
- 引用JavaScript内部对象;
- 由浏览器环境中提供;
- 创建新对象。
这就是说一个对象在被引用之前,这个对象必须存在,否则引用将毫无意义,而出现错误信息。从上面中我们可以 看出JavaScript引用对象可通过三种方式获取。要么创建新的对象,要么利用现存的对象。
3、有关对象操作语句
JavaScript不是一纯面向对象的语言,它设有提供面向对象语言的许多功能,因此JavaScript设计者之所以把它 你“基于对象”而不是面向对象的语言,在JavaScript中提供了几个用于操作对象的语句和关键字及运算符。
- For...in语句
- with语句
- this关键字
- New运算符
简单用代码示例一下:
<script language="JavaScript"> function creatPerson(name, age) { var person = new Object(); person.name = name; person.age = age; return person; } function showPerson(tempPerson) { for (var temp in tempPerson) { document.write("<div><p>" + temp + ":" + tempPerson[temp] + "</p></div>"); } } var person = creatPerson("lcj", 28); with (person) { name = "whoislcj"; age = 28; } showPerson(this.person); </script>
4、对象属性的引用
- 使用点(.)运算符
- 通过对象的下标实现引用
- 通过字符串的形式实现
5、对象的方法的引用
在JavaScript中对象方法的引用是非常简单的。 ObjectName.methods() 实际上methods()=FunctionName方法实质上是一个函数。
二、常用对象的属性和方法
JavaScript为我们提供了一些非常有用的常用内部对象和方法。用户不需要用脚本来实现这些功能。这正是基于对 象编程的真正目的。在JavaScript提供了string(字符串)、math(数值计算)和Date(日期)三种对象和其它一些相关的方法。从 而为编程人员快速开发强大的脚本程序提供了非常有利的条件。
1、常用内部对象
在JavaScript中对于对象属性与方法的引用,有两种情况:其一是说该对象是静态对象,即在引用该对象的属性 或方法时不需要为它创建实例;而另一种对象则在引用它的对象或方法是必须为它创建一个实例,即该对象是动态对 象。对JavaScript内部对象的引用,以是紧紧围绕着它的属性与方法进行的。因而明确对象的静动性对于掌握和理解 JavaScript内部对象是具有非常重要的意义。
1)、串对象
- string对象:内部静态性。
- 访问properties和methods时,可使用(.)运算符实现。
- 基本使用格式:objectName.prop/methods
(1)串对象的属性
该对象只有一个属性,即length。它表明了字符串中的字符个数,包括所有符号。 例: mytest="This is a JavaScript" mystringlength=mytest.length ,最后mystringlength返回mytest字串的长度为20。
(2)串对象的方法
string对象的方法共有19个。主要用于有关字符串在Web页面中的显示、字体大小、字体颜色、字符的搜索以及字 符的大小写转换。 其主要方法如下:
- 锚点anchor():该方法创建如用Html文档中一样的anchor标记。使用anchor如用Html中(A Name="")一 样。通过下列格式访问:string.anchor(anchorName)。
- 有关字符显示的控制方法 big字体显示, Italics()斜体字显示,bold()粗体字显示,blink()字符闪烁显示,small()字符用小体字显示, fixed()固定高亮字显示、fontsize(size)控制字体大小等。
- 字体颜色方法;fontcolor(color)
- 字符串大小写转换 toLowerCase()-小写转换,toUpperCase()大写转换。下列把一个给定的串分别转换成大写和小写格式: string=stringValue.toUpperCase和string=stringValue.toLowerCase。
- 字符搜索:indexOf[charactor,fromIndex] 从指定formIndtx位置开始搜索charactor第一次出现的位置。 返回字串的一部分字串:substring(start,end) 从start开始到end的字符全部返回。
2)、算术函数的math对象
功能:提供除加、减、乘、除以外的一引些自述运算。如对数,平方根等 。
静动性:静态对象
(1)主要属性
math中提供了6个属性,它们是数学中经常用到的常数E、以10为底的自然对数LN10、以2为底的自然对数 LN2、3.14159的PI、1/2的平方根SQRT1-2,2的平方根为SQRT2。
(2)主要方法
绝对值:abs() 正弦余弦值:sin(),cos() 反正弦反余弦 :asin(), acos() 正切反正切:tan(),atan() 四舍五入:round() 平方根:sqrt() 基于几方次的值:Pow(base,exponent)
3)、日期及时间对象
功能:提供一个有关日期和时间的对象。
静动性:动态性,即必须使用New运算符创建一个实例。例:
MyDate=New Date() Date对象没有提供直接访问的属性。只具有获取和设置日期和时间的方法。 日期起始值:1770年1月1日00:00:00。
(1). 获取日期的时间方法 getYear(): 返回年数 getMonth():返回当月号数 getDate(): 返回当日号数 getDay():返回星期几 getHours():返回小时数 getMintes(:返回分钟数 getSeconds():返回秒数 getTime() : 返回毫秒数
(2)设置日期和时间: setYear();设置年 setDate():设置当月号数 setMonth():设置当月份数 setHours():设置小时数 setMintes():设置分钟数 setSeconds():设置秒数 setTime ():设置毫秒数
写个简单的例子
<script language="JavaScript"> function getDateMsg() { var myDate = new Date(); var dateStr = myDate.getFullYear()+"年" + myDate.getMonth()+"月" + myDate.getDate()+"日<br> 星期" + myDate.getDay()+"<br>"+myDate.getHours()+":"+myDate.getMinutes()+":"+myDate.getSeconds(); return dateStr; } document.write("<div><p>" + getDateMsg() + "</p></div>"); </script>
2、JavaScript中的系统函数
JavaScript中的系统函数又称内部方法。它提供了与任何对象无关的系统函数,使用这些函数不需创建任何实例, 可直接用。
1.返回字符串表达式中的值:方法名:eval(字串表达式),例: test=eval("8+9+5/2");
2. 返回字符串ASCI码: 方法名:unEscape (string)
3.返回字符的编码: 方法名:escape(character)
4.返回实数: parseFloat(floustring);
5.返回不同进制的数: parseInt(numbestring ,rad.X) 其中radix是数的进制,numbs字符串数
总结:
今天学习了JavaScript的基础知识。后续学习一下更多相关JavaScript的知识。