Skip to content

Latest commit

 

History

History
1445 lines (1189 loc) · 52.7 KB

01_JavaScript.md

File metadata and controls

1445 lines (1189 loc) · 52.7 KB

#应该知道 JavaScript 是世界上最流行的编程语言。 这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

1.1 日常用途

  1. 嵌入动态文本于HTML页面。
  2. 对浏览器事件做出响应。
  3. 读写HTML元素。
  4. 在数据被提交到服务器之前验证数据。
  5. 检测访客的浏览器信息。
  6. 控制cookies,包括创建和修改等。
  7. 基于Node.js技术进行服务器端编程。

1.2 组成部分

**ECMAScript,**描述了该语言的语法和基本对象。 **文档对象模型(DOM),**描述处理网页内容的方法和接口。 **浏览器对象模型(BOM),**描述与浏览器进行交互的方法和接口。

2 开始

2.1 JavaScript导论

JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。
直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){}︰ ![Image of trycatch] (https://github.com/sammulyuan/javascript/blob/master/images%20/trycatch.png)

  1. Javascript被归类为直译语言,因为目前主流的引擎都是每次运行时加载代码并解译。
  2. V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey会将解译过的指令暂存,以提高性能,称为实时编译),但由于V8的核心部份多数用Javascript撰写(而SpiderMonkey是用C++),因此在不同的测试上,两者性能互有优劣。
  3. 与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。

2.2 基本特点

  1. 是一种解释性脚本语言(代码不进行预编译)。
  2. 主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
  3. 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
  4. 跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。

2.3 了解工具和应用

  • **TestSwarm:**是Mozilla实验室推出的一个开源项目,它旨在为开发者提供在多个浏览器版本上快速轻松测试自己JavaScript代码的方法。
  • **Minimee:**在网络上,速度是很重要的,Minimee能帮助你将CSS和JavaScript文件进行自动压缩和打包。
  • **Doctor JS:**Doctor JS 是一款帮你分析 JavaScript 代码的工具,测试你的代码在多态、原型、异常和回调方面写得怎么样。
  • **Remy Sharp’s JSConsole:**一个在线的 JavaScript 控制台工具,对于测试、调试和演示非常有用。
  • **JavaScript Library Boilerplate:**JavaScript Library Boilerplate 帮助你随时随地创建自己的 JavaScript 库。
  • **Jsdoc-toolkit:**JsDoc Toolkit 是一款辅助工具,你只需要根据约定在 JavaScript 代码中添加相应的注释,它就可以根据这些注释来自动生成API文档。
  • **Jasmine BDD for your JavaScript:**Jasmine 是一个有名的javascript单元测试框架,它是独立的“行为驱动开发”框架。
  • **ObfuscateJS: JavaScript compressor:**一款 JavaScript 混淆工具,去除空白和注释,重命名变量等。
  • **PEG.js:**PEG.js 是一个JavaScript的表达式语法解析器,它使您能够轻松地建立复杂的数据或计算机程序语言的快速分析器。
  • **JSONView:**JSONView 是一款帮助你在浏览器中查看JSON文档的Firefox插件。
  • **JSonduit:**JSonduit 是一个将网页内容转换为 JSON 格式订阅器的工具。
  • **Jsplumb:**JsPlumb 为开发者提供了可视化链接元素到页面的方法,可以结合jQuery、MooTools 和 YUI3使用。
  • Helma: Helma 是一个用来开发快速、稳定的Web应用程序的开源框架,它使用JavaScript 来作为服务端脚本环境,从而可以省略编译周期。
  • **HTML + JSON Report:**一款将 JSON 数据转换为可读性更高的HTML格式内容的在线工具。
  • **JSON Editor:**这个编辑器可以帮助你方便的编辑 JSON 字符串。

3 JavaScript核心语法

3.1 了解JavaScript代码的结构

  • 通过在网页或工具中加入<Script>…</Script>标记JavaScript的开始和结束,将JavaScript代码放到<Script>…</Script>之间:
<SCRIPT LANGUAGE="JavaScript">
   <!--
     ......
   //-->
</SCRIPT>	                 

(其中<!- - 和 - -> 标记,它为那些不支持 JavaScript 的浏览器提供了一个忽略它的方法,而 // 标记是一段注释的开始 )

也可以引入一个外部的JavaScript文件,外部文件通常包含被多个网页使用的代码,这个JavaScript文件一般以*.js作为扩展名,如需使用外部文件,请在 <script> 标签的 "src" 属性中设置该 .js 文件:

<SCRIPT LANGUAGE=“JavaScript” SRC=“*.js">
    ......
</SCRIPT>
  • 原则上,放在<head></head><body></body>之间。但视情况可以放在网页的任何部分;
  • 一个页面可以有几个<Script>…</Script> ,不同部分的方法和变量,可以共享。

3.2 JavaScript基本

  1. JavaScript是一门弱类型的语言,所有的变量定义均以var来实现
  2. JavaScript的变量必需先定义,再使用
  3. 在JavaScript中区分大小写,变量名是大小写敏感的,还需注意它必须以字母或下划线开始。

3.3 JavaScript 创建变量

  1. JavaScript 变量与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比z=x+y)。

    1. 变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum,totalvolume)。
    2. 变量必须以字母开头
    3. 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
    4. 变量名称对大小写敏感(y 和 Y 是不同的变量)

    提示:JavaScript 语句和 JavaScript 变量都对大小写敏感。 虽然JavaScript可以不需定义即可直接使用变量,但不建议这么做。

  2. 变量的作用范围:

    1. 在一个函数(function)之外定义一个变量,那它叫作全局变量
    2. 在 function 内部定义的变量则叫局部变量,它只作用于函数内

声明(创建)JavaScript 变量

在 JavaScript 中创建变量通常称为“声明”变量。

  • 使用 var 关键词来声明变量:var name;
  • 变量声明之后,该变量是空的(它没有值)。如需向变量赋值,请使用等号:carname=“Hello";
  • 也可以在声明变量时对其赋值:var name=“Hello”
  • **一条语句,多个变量:**语句以 var 开头,并使用逗号分隔变量即可:var name="Hello", age=22, job="CEO";
  • 声明也可横跨多行: 例:
var name="Hello",		
age=22		
job="CEO";
  • 在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。
  • 在执行过以下语句后,变量 name 的值将是 undefined:var name;

重新声明 JavaScript 变量 如果重新声明 JavaScript 变量,该变量的值不会丢失: 在以下两条语句执行后,变量 name 的值依然是 “Hello":

例:

var carname="Volvo";		
var carname;

3.4 JavaScript 运算符

JavaScript算数运算符

运算符 描述 标注 例子 结果
  • | 加 | 二元运算符,返回操作数相加结果 | 2+3 | 5
  • | 减 | 二元运算符,返回操作数相减结果 | 3-2 | 1
  • | 乘 | 二元运算符,返回操作数相乘结果 | 2*3 | 6 / | 除 | 二元运算符,返回操作数相除结果 | 9/3 | 3 % | 取余 | 二元运算符,返回整数除法的余数 | 12%5 | 2 ++ | 累加 | 一元运算符,操作对象加一;如果是x++返回增量后的值;如果是++x返回增量前的值 | 例:x=3 | x=x++=4 x=++x=3 -- | 递减 | 同上面,操作对象递减1| 例:x=3 | x=x--=3 x=--x=2

JavaScript 赋值运算符

是将右边的操作数赋予左边的操作对象,如 x=y 为将 y 赋予 x。

给定 x=10 和 y=5,下面的表格解释了赋值运算符:

运算符 例子 等价于 结果
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0
^= x^=y x=x^y按位异或,不同为1,true,相同为0,false x=15

JavaScript 字符串运算符 用于字符串值连结的运算符(+)将两个字符串值连结在一起。 例如:“我的”+“计算机”就返回“我的计算机” 如果把数字与字符串相加,结果将成为字符串。 例:

txt1="What a very";
txt2="nice day";
txt3=txt1+txt2;
txt3 包含的值是 "What a verynice day"。

要想在两个字符串之间增加空格,需要把空格插入一个字符串之中: 例:

txt1="What a very ";
txt2="nice day";
txt3=txt1+txt2;

或者把空格插入表达式中: 例:

txt1="What a very";
txt2="nice day";
txt3=txt1+" "+txt2;

在以上语句执行后,变量 txt3 包含的值是:"What a very nice day"

  • 取子集函数:substring(index1,index2)
  • 取长度属性:length
  • 取字符串中的某一个字符的函数:charAt(index)
  • 查找字符在字符串中的位置:(函数要注意大小写) 从左往右找indexOf(string) 从右往左找lastIndexOf(string)

3.5 JavaScript 比较

JavaScript 比较运算符 比较它的操作对象并返回一个逻辑值(true 或 false)。 操作对象即可以是数字也可以是字符串值。 给定 x=1 和 y=2,下面的表格解释了比较运算符:

运算符 描述 标注 实例 结果
== 等号 如果操作对象相等返回true,如果两个操作对象不为同一类型,javascript尝试转换它们为一个适当的类型 3 == x “3”== y 3== ‘3’ false false true
!= 不等于 同上面相反,两个操作水箱不相等返回true x!= 4 y != 2 true false
=== 绝对相等 如果操作对象相等并且类型相等返回true 3===‘3’ x===1 false true
!== 绝对不等 同上面相反,如果操作对象或不是同一类型返回true 3!== ‘3’ x!== 1 true false
> 大于 如果左边的操作对象大于右边操作对象返回true x > y false
>= 大于或等于 如果左边的操作对象大于或等于右边的操作对象返回true y >= x true
< 小于 如果左边的操作对象小于右边操作对象返回true x < y true
<= 小于或等于 如果左边的操作对象小于或等于右边的操作对象返回true y <= x false

JavaScript 逻辑运算符 返回一个布尔值

运算符 用法 描述
&& 表达式1&&表达式2 逻辑与,如果两个表达式都为真,&&返回true,否则返回false
|| 表达式1||表达式2 逻辑或,如果两个表达式都为真,||返回true,其中一个表达式为真,||返回true,否则返回false

JavaScript 特殊运算符:条件运算符

其语法为:条件?A:B 如果条件为真,结果值为 A,否则为 B 例:

name=(age==“22”)?"Jessica":"Dear ";		
如果变量 age 中的值是 “22",则向变量 name 赋值 "Jessica ",否则赋值 "Dear"。

运算符的优先级 是复合运算进行计算时的先后顺序,对于所有的二元运算都是从左到右进行计算,用圆括号来忽略优先级:

![Image of youxianji] (https://github.com/sammulyuan/javascript/blob/master/images%20/youxianji.png)

3.6 JavaScript 条件语句和循环

3.6.1 JavaScript If...Else

  • **If 语句:**只有当指定条件为 true 时,该语句才会执行代码。
if (条件)
{
    只有当条件为 true 时执行的代码
}
注意:请使用小写的 if。使用大写字母(IF)会生成 JavaScript 错误!
  • **If...else 语句:**如果条件为 true,则执行 if 段语句,若为 false 则执行 else 段语句,用法如下:
if (条件) {
      当条件为 true 时执行的代码
}else {
      当条件不为 true 时执行的代码
} 

条件可以是任何结果值为 true 或 false 的 JavaScript 表达式,语句可以是任何可执行的 JavaScript 语句

它还可以任意层地被嵌套,如果条件语句后面是单条语句,那么就不需要大括号 {}。请看下例代码: 例:

<SCRIPT>
function checkData () {
if (document.form1.three.value.length == 3)
    alert("OK!");
else {
    alert("请输入三个字符," + document.form1.three.value + "无效!");
    return false;
}
</SCRIPT>
<form name="form1"><center>
<input type="text" name="three" onChange="checkData()">
</center>
</form>
  • **If...else if...else 语句:**使用 if....else if...else 语句来选择多个代码块之一来执行
 if (条件 1)
{
   当条件 1 为 true 时执行的代码
}
else if (条件 2)
{
   当条件 2 为 true 时执行的代码
}
else
{
   当条件 1 和 条件 2 都不为 true 时执行的代码
}

3.6.2 JavaScript switch 语句

  • **switch 语句:**switch 语句允许程序给表达式求值,并用 case 标记来匹配表达式可能的值;如果匹配成立,程序将执行相应的语句,用法如下:
switch (表达式){
case : 语句;
	break;
case : 语句;
	break;
...
default : 语句;
}
  • 通过 switch 语句执行流程如下:
    1. 求表达式的值并依次序查看 case,直到找到一个匹配;
    2. 如果 case 的值等于表达式的值,则执行它相应的语句;继续执行,直到遇到一个 break 语句,或者 switch 语句结束。 这意味着如果没有使用一个 break 语句,则多个 case 块被执行。
    3. 如果没有 case 等于表达式的值,则跳转到 default;如果没有 default 情况,则跳转到最后一步;继续执行紧接 switch 代码块末尾的语句。

例:

var day=new Date().getDay();					
switch (day){					
case 0:					
   x="Today it's Sunday";			
   break;			
case 1:			
   x="Today it's Monday";			
   break;			
case 2:			
   x="Today it's Tuesday";			
   break;			
case 3:			
   x="Today it's Wednesday";		
   break;			
case 4:				
   x="Today it's Thursday";				
   break;			
case 5:			
   x="Today it's Friday";			
   break;			
case 6:			
   x="Today it's Saturday";			
   break;			
}			

3.6.3 JavaScript for 循环

  • **for 语句:**一个 for 语句进行循环直到条件为 false,用法如下:
for ([初始表达式]; [条件]; [增量表达式]) {
     被执行的代码块;
}

初始表达式: 在循环(代码块)开始前执行,该表达式只在执行循环前被执行一次;

初始表达式是可选的,也就是说不使用也可以,可以在初始表达式中初始化任意(或者多个)值

条件: 定义运行循环(代码块)的条件,是一个 Boolean 表达式;如果是 true,则语句被执行,如果为 false,则循环结束;

如果省略了条件,那么必须在循环内提供 break。否则循环就无法停下来。这样有可能令浏览器崩溃

增量表达式: 在循环(代码块)已被执行之后执行;

增量表达式也是可选的。增量可以是负数 (i--),或者更大 (i=i+15)。可以省略(比如当循环内部有相应的代码时)

被执行的代码块: 为 true 时,要执行的语句,它可以是复合(多条)语句。 例:

myarray = new Array();
for (i = 0; i < 10; i++)
{
    myarray[i] = i;
}
  • **For/In 循环:**JavaScript for/in 语句循环遍历对象的属性:

例:

var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
    txt=txt + person[x];
}

3.6.4 JavaScript while 循环

  • **while 循环:**While 循环会在指定条件为真时循环执行代码块,执行一个语句,直到指定的条件为 false。
while (条件)
{
   需要执行的代码
}

该语句与 do...while 语句不同的是,它将在语句执行开始检查条件是否为 true,如是 false,它将根本不会执行下面的语句

  • **do...while 语句:**do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。用法如下:
do {
    需要执行的代码;
} while (条件)

首先执行一个语句块,然后重复循环的执行该语句块,直到条件表达式等于 false

3.6.5 JavaScript Break 和 Continue 语句

  • **break 语句:**可用于跳出循环 break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)

例:

for (i=0;i<10;i++)
{
  if (i==3) break;
  x=x + "The number is " + i + "<br>";
}
  • Continue 语句: continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。

例:

<script>		
function myFunction(){		
	var x="",i=0;		
	for (i=0;i<10;i++){		
		if (i==5){		
		continue;		
	}		
	x=x + "The number is " + i + "<br>";		
	}			
}		
</script> 		

输出后会跳过5执行 continue 语句(带有或不带标签引用)只能用在循环中。 break 语句(不带标签引用),只能用在循环或 switch 中。

通过标签引用,break 语句可用于跳出任何 JavaScript 代码块

3.7 JavaScript函数和创建函数

3.7.1 了解函数的用途

函数是由事件驱动的活着当它被调用时执行的可重复使用的代码块。

3.7.2 JavaScript 函数定义

在JavaScript中使用函数时,必须先定义这个函数,然后才能对这个函数进行调用。下面先介绍函数的定义方式:

function 函数名(参数列表)
{
    代码块
}
利用function来定义一个函数
  • **函数名:**调用函数时通过函数名进行调用。 对于函数的命名,一般应该使用能够描述函数功能的单词进行描述,往往也可以使用多个单词组合进行命名,这样能够提高脚本的可读性。
  • **参数列表:**参数列表是可选的,在必要的时候;可以使用参数列表向函数传递一些参数,以便在函数中可以使用这些参数。
  • **代码块:**代码块中的代码包含在一对大括号中,通过代码块的执行完成函数的功能,如果需要返回一个值给调用函数的语句,应该在代码块中使用return语句。

3.7.3 JavaScript 函数参数

  • **调用带参数的函数:**在调用函数时,可以向其传递值,这些值被称为参数。 这些参数可以在函数中使用。可以发送任意多的参数,由逗号 (,) 分隔: myFunction(argument1,argument2) 当您声明函数时,请把参数作为变量来声明:
function myFunction(var1,var2)
{
   这里是要执行的代码
}

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

3.7.4 带返回值的函数

  • 在使用 return 语句时,函数会停止执行,并返回指定的值。
function myFunction()
{
   var x=5;
   return x;
}

上面的函数会返回值 5。

注释:整个 JavaScript 并不会停止执行,仅仅是函数。JavaScript 将继续执行代码,从调用函数的地方。

3.7.5 局部变量和全局变量

  • 局部 JavaScript 变量 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是局部的)。 可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。 只要函数运行完毕,本地变量就会被删除。
  • 全局 JavaScript 变量 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
  • JavaScript 变量的生存期 JavaScript 变量的生命期从它们被声明的时间开始。 局部变量会在函数运行以后被删除。 全局变量会在页面关闭后被删除。

如果把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。这条语句:carname="Volvo"; 将声明一个全局变量 carname,即使它在函数内执行。

3.7.6 JavaScript 函数调用

函数在定义好之后,不能自动执行,需要进行调用 调用方式:

  1. <script>标签内调用
    例:
<script>
function demo(){
   var a=10;
   var b=20;
   var sum=a+b;
   alert(sum);
}
demo();//调用函数
</script> 
  1. 在HTML文件中调用

例:

<form>
<input type=“button” value=“按钮” onclick=“demo()>
</form><button onclick=“demo()>按钮</button>

3.7.7 JavaScript 闭包

解释: 一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 闭包的特点:

  1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
  2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

**原因:**javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。 当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

例:

function closure(){
    var str = "I'm a part variable.";
    return function(){
    alert(str);
    }
}
var fObj = closure();
fObj();

在上面代码中,str是定义在函数closure中局部变量,若str在closure函数调用完成以后不能再被访问,则在函数执行完成后str将被释放。 但是由于函数closure返回了一个内部函数,且这个返回的函数引用了str变量,导致了str可能会在closure函数执行完成以后还会被引用,所以str所占用的资源不会被回收。这样closure就形成了一个闭包。

3.8 JavaScript 输出

可以使用 document.getElementById(id) 方法从 JavaScript 访问某个 HTML 元素;

  • 通过指定的 id 来访问 HTML 元素,并改变其内容: 例:
<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<p id="demo">My First Paragraph</p>
<script>
document.getElementById("demo").innerHTML="My First JavaScript";
</script>
</body>
</html>
  • 直接把 <p>元素写到 HTML 文档输出中: 例:
<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<script>
document.write("<p>My First JavaScript</p>");
</script>
</body>
</html>

注意:document.write() 仅仅向文档输出写内容,如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖。

3.9 JavaScript 语句

JavaScript 语句向浏览器发出的命令,语句的作用是告诉浏览器该做什么;

  • 分号 用于分隔 JavaScript 语句。 通常我们在每条可执行的语句结尾添加分号。 使用分号的另一用处是在一行中编写多条语句。

提示:也可能看到不带有分号的案例,在 JavaScript 中,用分号来结束语句是可选的。

  • JavaScript 代码 JavaScript 代码(或者只有 JavaScript)是 JavaScript 语句的序列。浏览器会按照编写顺序来执行每条语句。
  • JavaScript 代码块 JavaScript 语句通过代码块的形式进行组合。 块由左花括号开始,由右花括号结束。块的作用是使语句序列一起执行。

JavaScript 函数是将语句组合在块中的典型例子。

  • 空格 JavaScript 会忽略多余的空格。你可以向脚本添加空格,来提高其可读性。

  • 对代码行进行折行 可以在文本字符串中使用反斜杠对代码行进行换行。 注意:这样不可以

      document.write \
      ("Hello World!");
    

3.10 JavaScript 数据类型

  1. 整数类型 一个整数可以是十进制、十六进制和八进制数,一个十进制数由一串数字序列组成,它的第一个数字不能为0;如38,-25,+120,74286等都是十进制整数。 如果第一个数字为0,则表示它是一个八进制数;如0,012,0377,04056等都是八进制整数,对应的十进制整数依次为0,10,255和2094。 若为0x,则表示它为一个十六进制数;如0x0,0X25,0x1ff,0x30CA等都是十六进制整数,对应的十进制整数依次为0,37,511和4298。

  2. 浮点数类型 浮点数的例子: 3.1415, -3.1E12, 0.1e12 和 2E-12 一个浮点数必须包含一个数字,一个小数点或“e”(或“E”)。

  3. 布尔类型 Boolean 类型有两种值:true 和 false

  4. 字符串类型 字符串是若干封装在双引号(“)或单引号(')内的字符。如下: "fish" 'fish' "5467" "a line" 可以在字符串中使用引号,只要不匹配包围字符串的引号即可: "He is called 'Bill'";

  5. 对象类型 用new声明一个新的对象 例:

     var currentDay = new Date();		
     alert(currentDay.getDay());
    

对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value)来定义。属性由逗号分隔: 例:

	var person={firstname:"Bill", lastname:"Gates", id:5566};

空格和折行无关紧要。声明可横跨多行: 例:

	var person={
	firstname : "Bill",
	lastname  : "Gates",
	id        :  5566
	};

对象属性有两种寻址方式: 例:

	name=person.lastname;
	name=person["lastname"];
  1. Undefined 和 Null Undefined 这个值表示变量不含有值。 可以通过将变量的值设置为 null 来清空变量。

  2. 数组类型 例:

     var arr = new Array(3);
    

通过arr.length取得数组的长度

注意: JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。

3.11 JavaScript 注释

  • 单行注释以 // 开头。
  • 多行注释以 /* 开始,以 */ 结尾。

3.12 JavaScript 保留字关键字

  • 关键字: 在javascript中,根据规定,关键字是保留的,不能用作变量名或函数名。
break delete function return type
case do if switch var
catch else in this void
continue finally instance of throw while
default for new try with
  • 保留字: 保留字在某种意义上是为将来的关键字而保留的单词。因此保留字不能被用作变量名或函数名。
abstract debugger final int private super
boolean double float interface protected synchronize
byte enum goto long public throws
char export implements native short transient
class extends import package static volatile,const

3.13 JavaScript 验证

  • **JavaScript 表单验证:**JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。 被 JavaScript 验证的这些典型的表单数据有:
    1. 用户是否已填写表单中的必填项目?
    2. 用户输入的邮件地址是否合法?
    3. 用户是否已输入合法的日期?
    4. 用户是否在数据域 (numeric field) 中输入了文本?
  • E-mail 验证: 输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号。

4 类型和对象

4.1 什么是对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... JavaScript 允许自定义对象; JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。

  • **访问对象的属性:**属性是与对象相关的值。 例:
objectName.length
  • **访问对象的方法:**方法是能够在对象上执行的动作。
  • 创建 JavaScript 对象

方法:

  1. 定义并创建对象的实例 例:
var currentDay = new Date();
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
  1. 使用函数来定义对象,然后创建新的对象实例 例:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
var myFather=new person("Bill","Gates",56

4.2 JavaScript Number 对象

JavaScript 只有一种数字类型,可以使用也可以不使用小数点来书写 所有 JavaScript 数字均为 64 位.

  • 精度: 整数(不使用小数点或指数计数法)最多为 15 位。 小数的最大位数是 17,但是浮点运算并不总是 100% 准确:

  • **八进制和十六进制:**如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

提示:绝不要在数字前面写零,除非您需要进行八进制转换。

数字属性和方法

  • 属性:
MAX VALUE, NaN				
MIN VALUE, prototype		
NEGATIVE INFINITIVE, constructor		
POSITIVE INFINITIVE
  • 方法:
toExponential(), toString()
toFixed(), valueOf()
toPrecision()

4.3 JavaScript Array(数组)

  • **数组对象的作用是:**使用单独的变量名来存储一系列的值。
  • **定义数组:**数组对象用来在单独的变量名中存储一系列的值。 使用关键词 new 来创建数组对象。 例:
var myArray=new Array()
  • 赋值: 例:
var mycars=new Array()
mycars[0]="Saab"

var mycars=new Array("Saab","Volvo","BMW")

4.4 JavaScript String

字符串对象用于处理已有的字符块。 例:

var txt="Hello world!"
document.write(txt.length)
document.write(txt.toUpperCase())

输出12 HELLO WORLD!

4.5 JavaScript Date(日期)

  • **定义日期:**Date 对象用于处理日期和时间,可以通过 new 关键词来定义 Date 对象。
var myDate=new Date()

注意:Date 对象自动使用当前的日期和时间作为其初始值。

4.6 JavaScript Boolean(布尔)

  • **Boolean 对象:**可以将 Boolean 对象理解为一个产生逻辑值的对象包装器。

Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。

  • 创建 Boolean 对象 使用关键词 new 来定义 Boolean 对象。下面的代码定义了一个名为 myBoolean 的逻辑对象:
var myBoolean=new Boolean()

注释:如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 "false" 时)

4.7 JavaScript Math(算数)

  • **Math 对象:**Math 对象提供多种算数值类型和函数。无需在使用这个对象之前对它进行定义。 Math(算数)对象的作用是:执行普通的算数任务。
  • **算数值:**JavaScript 提供 8 种可被 Math 对象访问的算数值及在 Javascript 中使用这些值的方法:
常数, Math.E
2 的自然对数, Math.LN2
圆周率, Math.PI
10 的自然对数, Math.LN10
2 的平方根, Math.SQRT2
以 2 为底的 e 的对数, Math.LOG2E
1/2 的平方根, Math.SQRT1_2
以 10 为底的 e 的对数, Math.LOG10E
  • 算数方法
    1. round 方法对一个数进行四舍五入
    2. random() 方法来返回一个介于 0 和 1 之间的随机数

4.8 JavaScript RegExp 对象

RegExp 对象用于规定在文本中检索的内容 RegExp 是正则表达式的缩写

  • **定义 RegExp:**通过 new 关键词来定义 RegExp 对象。以下代码定义了名为 patt1 的 RegExp 对象,其模式是 "e":
var patt1=new RegExp("e");

当使用该 RegExp 对象在一个字符串中检索时,将寻找的是字符 "e"。

RegExp 对象的方法: test()、exec() 以及 compile()。

  • **test() 方法:**检索字符串中的指定值。返回值是 true 或 false。
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));

输出true,因为此字符串中含有“e”

  • **exec() 方法:**检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));

输出“e”

  • **compile() 方法:**用于改变 RegExp。compile() 既可以改变检索模式,也可以添加或删除第二个参数。
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));

输出truefalse,因为字符串里有“e”没有“d”

5 理解JavaScript HTML DOM

5.1 DOM 简介

**HTML DOM (文档对象模型):**通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树。 HTML DOM 树:

![Image of DOM%E6%A0%91] (https://github.com/sammulyuan/javascript/blob/master/images%20/DOM%E6%A0%91.png)

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

查找 HTML 元素方法

  1. 通过 id 找到 HTML 元素:在 DOM 中查找 HTML 元素的最简单的方法 例:
var x=document.getElementById("hello");

如果找到hello元素,则x返回hello元素;否则返回null 2. 通过标签名找到 HTML 元素 例:

var x=document.getElementById("main");
var y=x.getElementsByTagName("p");

凭id找main元素,在找main元素中的所有<p>元素 3. 通过类名找到 HTML 元素

提示:通过类名查找 HTML 元素在 IE 5,6,7,8 中无效。

5.2 DOM HTML

  • **改变 HTML 输出流:**document.write() 可用于直接向 HTML 输出流写内容。 例:
<!DOCTYPE html>
<html>
<body>
<script>
document.write(Date());
</script>
</body>
</html>

提示:绝不要使用在文档加载之后使用 document.write()。这会覆盖该文档。

  • **改变 HTML 内容:**修改 HTML 内容的最简单的方法时使用 innerHTML 属性。
document.getElementById(id).innerHTML=new HTML

例:

<html>
<body>
<p id="p1">Hello World!</p>
<script>
document.getElementById("p1").innerHTML="New text!";
</script>
</body>
</html>

此句输出的是New text!不是Hello World!

  • 改变 HTML 属性
document.getElementById(id).attribute=new value

5.3 DOM CSS

改变 HTML 样式

document.getElementById(id).style.property=new style

例:

<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color="blue";
</script>

输出后Hello World!字体为蓝色

5.4 DOM 元素

**创建新的 HTML 元素:**向 HTML DOM 添加新元素,必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素。

  • 创建新的<p>元素:
var para=document.createElement("p");
  • 创建文本节点,向 <p> 元素添加文本:
var node=document.createTextNode("这是新段落。");
  • <p>元素追加文本节点:
para.appendChild(node);
  • 向一个已有的元素追加新元素:
var element=document.getElementById("div1");
  • 向已有的元素追加新元素:
element.appendChild(para);

**删除已有的 HTML 元素:**删除 HTML 元素,必须首先获得该元素的父元素:

  • 从父元素中删除子元素:
parent.removeChild(child);
  • 在不引用父元素的情况下删除某个元素:找到希望删除的子元素,然后使用其 parentNode 属性来找到父元素: 例:
var child=document.getElementById("p1");
child.parentNode.removeChild(child);

6 JS 浏览器BOM

浏览器对象模型(Browser Object Model)尚无正式标准。 由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。

6.1 JavaScript Window

所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。 全局变量是 window 对象的属性。全局函数是 window 对象的方法。 甚至 HTML DOM 的 document 也是 window 对象的属性之一:

window.document.getElementById("header");
  • **Window 尺寸:**有三种方法能够确定浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)。 对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:
window.innerHeight - 浏览器窗口的内部高度		
window.innerWidth - 浏览器窗口的内部宽度

对于 Internet Explorer 8、7、6、5:

document.documentElement.clientHeight	
document.documentElement.clientWidth	

或者

document.body.clientHeight		
document.body.clientWidth
  • 一些其他方法:
window.open() - 打开新窗口		
window.close() - 关闭当前窗口		
window.moveTo() - 移动当前窗口		
window.resizeTo() - 调整当前窗口的尺寸

6.2 JavaScript Window Screen

**Window Screen:**window.screen 对象在编写时可以不使用 window 这个前缀。

screen.availWidth - 可用的屏幕宽度
screen.availHeight - 可用的屏幕高度
  • **Window Screen 可用宽度:**screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如窗口任务栏。
  • **Window Screen 可用高度:**screen.availHeight 属性返回访问者屏幕的高度,以像素计,减去界面特性,比如窗口任务栏。
  • **函数:**alert,confirme,prompt,open,close

6.3 JavaScript Window Location

**Window Location:**window.location 对象在编写时可不使用 window 这个前缀。

location.hostname 返回 web 主机的域名		
location.pathname 返回当前页面的路径和文件名		
location.port 返回 web 主机的端口 (80 或 443)	
location.protocol 返回所使用的 web 协议(http:// 或 https://)
  • **Window Location Href:**location.href 属性返回当前页面的 URL。
  • **Window Location Pathname:**location.pathname 属性返回 URL 的路径名。
  • **Window Location Assign:**location.assign() 方法加载新的文档。

6.4 JavaScript Window History

**Window History:**window.history 对象在编写时可不使用 window 这个前缀。为了保护用户隐私,对 JavaScript 访问该对象的方法做出了限制。

history.back() - 与在浏览器点击后退按钮相同
history.forward() - 与在浏览器中点击按钮向前相同
  • **Window History Back:**history.back() 方法加载历史列表中的前一个 URL。
  • **Window History Forward:**history forward() 方法加载历史列表中的下一个 URL。

6.5 JavaScript Navigator

**Window Navigator:**window.navigator 对象在编写时可不使用 window 这个前缀。

  • 浏览器检测: 由于 navigator 可误导浏览器检测,使用对象检测可用来嗅探不同的浏览器。 由于不同的浏览器支持不同的对象,您可以使用对象来检测浏览器。 例如,由于只有 Opera 支持属性 "window.opera",可以据此识别出 Opera。 例:
if (window.opera) {...some action...}

6.6 JavaScript 弹窗

  • **警告框:**警告框经常用于确保用户可以得到某些信息。 当警告框出现后,用户需要点击确定按钮才能继续进行操作。
alert("文本")
  • **确认框:**确认框用于使用户可以验证或者接受某些信息。 当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。
confirm("文本")

如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。

  • **提示框:**提示框经常用于提示用户在进入页面前输入某个值。 当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
prompt("文本","默认值")

如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

6.7 JavaScript 计时事件

**avaScript 计时事件:**通过使用 JavaScript,我们有能力作到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。

方法:

setTimeout():未来的某时执行代码
clearTimeout():取消setTimeout()
  • setTimeout()
var t=setTimeout("javascript语句",毫秒)

setTimeout() 方法会返回某个值。 第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 alert('5 seconds!'),或者对函数的调用,诸如 alertMsg()

  • clearTimeout()
clearTimeout(setTimeout_variable)

6.8 JavaScript Cookies

cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

  • 创建和存储cookie

例:创建一个可在 cookie 变量中存储访问者姓名的函数

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" :";expires="+exdate.toGMTString())
}

7 事件和事件监听

7.1 JavaScript事件处理(DOM 事件)

  • **onBlur:**在select、text、password、textarea失去焦点时被触发;
  • **onChange:**在select、text、textarea的值被改变且失去焦点时被触发; onchange 事件常结合对输入字段的验证来使用。
  • **onClick:**出现在一个对象被鼠标选中时被触发(button,checkbox,radio,reset,submit,text,textarea等)
  • **onFocus:**在一个对象获得焦点,select、text、text area时被触发;
  • **onLoad:**出现在一个文档完成对一个窗口的载入用户进入页面时被触发;
  • **onMouseOver:**鼠标被移动到一个超连接上时被触发; onmouseover 事件可用于在用户的鼠标移至 HTML 元素上方时触发函数。
  • **onMouseOut:**鼠标从一个超连接上移开时被触发; onmouseout 事件可用于在用户的鼠标移出元素时触发函数。
  • **onSelect:**当form对象中的内容被选中时被触发,视情况可以对一个对象组合使用这些事件处理;
  • **onSubmit:**出现在用户通过提交按钮提交一个表单时被触发;
  • **onUnload:**当用户退出一个文档离开页面时被触发;

注意:onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。 首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件,最后,当完成鼠标点击时,会触发 onclick 事件。

HTML 事件的例子:

  1. 当用户点击鼠标时
  2. 当网页已加载时
  3. 当图像已加载时
  4. 当鼠标移动到元素上时
  5. 当输入字段被改变时
  6. 当提交 HTML 表单时
  7. 当用户触发按键时

7.2 JavaScript异常处理

**JavaScript 抛出错误:**当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。 描述这种情况的技术术语是:JavaScript 将抛出一个错误 JavaScript 测试和捕捉:

  • **try 语句:**允许我们定义在执行时进行错误测试的代码块。
  • **catch 语句:**允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 try 和 catch 是成对出现的。

try
{
   //在这里运行代码
}
catch(err)
{
   //在这里处理错误
}
  • Throw 语句: throw 语句允许我们创建自定义错误。 正确的技术术语是:创建或抛出异常(exception)

如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

throw exception

注意:异常可以是 JavaScript 字符串、数字、逻辑值或对象。

7.3 onClick 和 onLoad

  • onload 和 onunload 事件可用于处理 cookie。
  • onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。
<body onload="checkCookies()">

7.4 DOM 事件监听

**添加监听:**在JavaScript中,我们使用如下的方式为元素添加事件监听:

element.addEventListener(<event-name>, <callback>, <use-capture>);
  • **event-name(string):**这是你想监听的事件的名称或类型。 它可以是任何的标准DOM事件(click, mousedown, touchstart, transitionEnd,等等),当然也可以是你自己定义的事件名称(我们会在后面介绍自定义事件相关内容)。
  • **callback(function)(回调函数):**这个函数会在事件触发的时候被调用。相应的事件(event)对象,以及事件的数据,会被作为第一个参数传入这个函数。
  • **use-capture(boolean):**这个参数决定了回调函数(callback)是否在“捕获(capture)”阶段被触发。
var element = document.getElementById('element');
function callback() {
  alert('Hello');
}
// Add listener
element.addEventListener('click', callback);

**移除监听:**使用element.removeEventListener()方法来移除事件监听:

element.removeEventListener(<event-name>, <callback>, <use-capture>);

注意:必须要有这个被绑定的回调函数的引用。简单地调用element.removeEventListener('click');是不能达到想要的效果的。

不能使用匿名函数作为回调函数。 例:

var element = document.getElementById('element');
function callback() {
alert('Hello once');
element.removeEventListener('click', callback);
}
// Add listener
element.addEventListener('click', callback);

Element对象

![Image of Element] (https://github.com/sammulyuan/javascript/blob/master/images%20/Element.png)

8 JavaScript 调试

8.1. Firebug

Firebug是网页浏览器 Mozilla Firefox 下的一款开发类扩展,现属于Firefox的五星级强力推荐扩展之一。 它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。 Firebug如同一把精巧的瑞士军刀,从各个不同的角度剖析Web页面内部的细节层面,给Web开发者带来很大的便利。 Firebug是一个除错工具。用户可以利用它除错、编辑、甚至删改任何网站的 CSS、HTML、DOM 以及JavaScript 代码。

  • 主要功能: CSS调试 CSS尺标 网络监视器 JS调试器 Console 控制台 修改HTML DOM查看器

9 创建智能化表单

9.1 访问表单元素

  • 表单对象Form属性:
action 、elements、method、name、target  
  • 表单提交的方法:
Get  Post   name    target           
  • 表示打开表单的url:
_self    _parent    _blank    _top
  • 表单元素:
document.forms[索引].elements[索引].属性  
document.forms[索引].elements[索引].方法(参数)  
document.forms[索引].属性  
document.forms["表单名称"].属性  
document.表单名称.元素名称.属性   
document.表单名称.元素名称.方法(参数)

9.2 表单提交

表单提交的一般方式:

1. .....<input type="submit" onclick="return validate();">     
2. .....<form action="...." name="...." onsubmit="return validate(this);">     
3. .....<input type="button" onclick="validate(this)">

9.3 隐藏和显示表单

validate()函数

function validate(obj){  
obj.submit() 
}

10 JavaScript 库

10.1 JavaScript库的介绍

JavaScript 库 - jQuery、Prototype、MooTools。

10.2 JavaScript jQuery

**jQuery:**jQuery 是目前最受欢迎的 JavaScript 框架。 它使用 CSS 选择器来访问和操作网页上的 HTML 元素(DOM 对象)。 jQuery 同时提供 companion UI(用户界面)和插件。 许多大公司在网站上使用 jQuery:Google、Microsoft、IBM、Netflix

  • **jQuery 描述:**主要的 jQuery 函数是 $() 函数(jQuery 函数)。如果您向该函数传递 DOM 对象,它会返回 jQuery 对象,带有向其添加的 jQuery 功能。 jQuery 允许通过 CSS 选择器来选取元素。 在 JavaScript 中,可以分配一个函数以处理窗口加载事件:

例: JavaScript 方式:

function myFunction()
{
  var obj=document.getElementById("h01");
  obj.innerHTML="Hello jQuery";
}
onload=myFunction;

等价的 jQuery 是不同的: jQuery 方式:

function myFunction()
{
  $("#h01").html("Hello jQuery");
}
$(document).ready(myFunction);   

10.3 JavaScript Prototype

**Prototype:**Prototype 是一种库,提供用于执行常见 web 任务的简单 API。

  • API 是应用程序编程接口(Application Programming Interface)的缩写。它是包含属性和方法的库,用于操作 HTML DOM。
  • Prototype 通过提供类和继承,实现了对 JavaScript 的增强。

10.4 JavaScript MooTools

**MooTools:**MooTools 也是一个框架,提供了可使常见的 JavaScript 编程更为简单的 API。

MooTools 也含有一些轻量级的效果和动画函数。

10.5 JavaScript AJAX的使用

AJAX 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取。

http 请求 GET 用于获取数据。GET 是在 URL 中传递数据,它的安全性低,容量低。 POST 用于上传数据。POST 安全性一般,容量几乎无限。

ajax 请求:

ajax 请求一般分成 4 个步骤: 1.创建 ajax 对象 在创建对象时,有兼容问题:

var oAjax = new XMLHttpRequest();   //for ie6 以上
var oAjax = new ActiveXObject('Microsoft.XMLHTTP'); //for ie6

合并上面的代码:

var oAjax = null;
if(window.XMLHttpRequest){
  oAjax = new XMLHttpRequest();
}else{
  oAjax = new ActiveXObject('Microsoft.XMLHTTP');
}

**2.连接服务器:**会用到 open() 方法。

  • open() 方法有三个参数: 第一个参数是连接方法即 GET 和 POST, 第二个参数是 URL 即所要读取数据的地址, 第三个参数是否异步,它是个布尔值,true 为异步,false 为同步。
oAjax.open('GET', url, true);

**3.发送请求:**send() 方法。

oAjax.send();

4.接收返回值 onreadystatechange 事件。当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState:请求状态,返回的是整数(0-4)。
 0(未初始化):还没有调用 open() 方法。
 1(载入):已调用 send() 方法,正在发送请求。
 2(载入完成):send() 方法完成,已收到全部响应内容。
 3(解析):正在解析响应内容。
 4(完成):响应内容解析完成,可以在客户端调用。
status:请求结果,返回 200 或者 404。
200 => 成功。
404 => 失败。

11 JavaScript 实例

11.1 JavaScript 对象实例

极客课程链接:JavaScript内置对象

11.2 JavaScript 浏览器对象实例

极客课程链接:JavaScript浏览器对象

11.3 JavaScript HTML DOM 实例

11.4 JavaScript 总结

jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 HTML DOM 定义了访问和操作 HTML 文档的标准方法。 HTML DOM 独立于平台和语言,可被任何编程语言使用,比如 Java、JavaScript 和 VBscript。 AJAX = 异步 JavaScript 和 XML。 AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。 通过与服务器进行数据交换,AJAX 可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 接下来要学好HTML5。