Hybrid App开发之JavaScript基础

时间:2020-12-06 01:20:27

前言:

前面学习了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的知识。