js
javaScript是网景公司(netscape)公司开发,基于客户端,面向对象(并非完全面向对象不支持多态和继承),事件驱动式的网页脚本语言。

特点:
一种解释性脚本语言,基于对象(内部提供对象库)的脚步语言,简单(自动识别类型),安全(不能操作本地硬盘),动态性(动态效果),跨平台(基于浏览器)
作用:
交换操作,表单验证,网页特效,web游戏,服务器脚本
js执行顺序:
对于主动执行获取文档元素的js需要写在文档下面以便让文档先加载。
1.网页嵌入js的3种方式:
1.1.js和标签在同一个页面的2种方式:

1.2.外部导入:

2.变量定义:显示和隐式定义(可以自动识别类型)
tem="aaa";//隐式定义,隐式定义的变量使用前必须初始化。 var tem;//显示定义 var a,b,c=3;//一次定义多个变量
3.变量的命名和java变量命名差不多,只是开头多支持了$符号,也区分大小写。
4.常用的类型(字符串类型,可以单引号和双引号都可以)

==和===区别:null和undefined的比较用==
var s=null; var ss; s==ss //true 认为是相等的 s===ss//false 不是严格相等的
数值类型的定义。
var a=1; var a=1.2; var a=1.2e3;//科学计数e3是10的3次方 var a=0xf;//16进制 var a=023;//8进制 var a=.2e4;//.2是0.2
5.字符串类型和数值型的转换,和java区别是可以转换字符串中数字的部分:(NAN:not a number)

parseInt():方法可以截取出字符串,小数点前面的整数,别的进制转换为10进制,字符串返回NAN


parseFloat和parseInt的区别是:对于进制数据当成,数字开头的字符串处理。对于数字有小数截取到小数只有整数就只截取整数。
6.常用操作字符串方法:(和java类似)

7.正则表达式定义,查找获取方法:


exec找不到指定值返回null;
7.1.单个通配符:



[A-z] (red|blue):这两种好像在java正则中没有注意到。
7.2.量词修饰符

7.3正则修饰符:


8.数组的定义:length属性得到数组长度。

8.1js数组特点(和java不一样):可变长度,元素多种类型,未赋值是undefined


9.运算符:

===和==区别,对于“10”==10 是true;而“10”===10是false;

10.流程控制语句:if,swith,while,do while,for,for in
java6的swich也支持字符串表达式了。

和java用法一样,for循环也支持continue和break。

特别之处是这个for in循环(与java最大区别)得到遍历数组的下标,还可以遍历对象得到属性。

输出:
1 3 abc true

输出:

11.js一些特殊语句:
11.1.语句块:

语句块和java中块意思不一样:js作用域,只有全局变量(块也是全局的)和方法变量(方法内变量)
11.2.空语句:

就一个分号,一般用于给数组初始化。
11.3.异常:

js就只有这个异常类Error.
11.4.捕获异常:

js只能一个catch语句
11.5.with语句简化对象重复书写:

12.js的函数有3种声明方式,函数即:为代码的重用,类似java方法,特别之处是参数不要类型声明。
12.1.命名函数:fuction 函数名{ }

12.2.匿名函数:
另一种写法:
变量可以指向了一个函数,可以用这个变量调用函数。
12.3.构造对象匿名函数:


总结函数:
一般使用1,2:简单,可读性好。 函数其实就是一个function对象,是window对象的一个属性(一般省略了,window.f('aaa'))。
13.函数的返回类型,根据是否有return语句自动识别是否有返回值。

没有返回值,输出:undefined
返回一个函数并使用:

14.函数内部变量和函数:
局部变量:函数内的变量。只能在函数内使用。
局部函数:函数内部的函数,只有外部函数调用了,其内部的函数才调用。
调用函数时自动调用内部函数

通过返回内部函数调用内部函数:

15.函数3种调用方式:
15.1.最常用的可以省略window对象.

15.2.使用call/apply


15.3使用3种方式调用的实例:

第2,3种可以看成一类只是参数写法不一样。
1和2种方式的区别是:第2种可以执行一个未知的函数(可以接受一个未知函数做参数然后运行它)。【类似java反射】
;
16.常用内置对象:
16.1.Date






16.2.Math

17.创建对象的3种方式:
17.1.声明构造器的方式。声明参数构造器,有默认构造器。


17.2.利用object方式生成对象,然后给对象赋予属性和方法(js是动态语言)。属性名,方法名都不需要声明直接赋值。


17.3.用json(javascript object notation:一种轻量级数据传输方式)方式创建对象。
json格式:用“{...}”将将元素和属性括起来,元素属性之间用“:“分开,元素之间用“,”隔开。 json数组格式用“[...]”括起来,json之间用“,”隔开:

数组格式:(json和xml表示数据的区别,json更小,xml描述语义更丰富多用于配置。)




18.BOM(Brower object model),js提供一些操作浏览器属性的对象。
(并没有被标准化,所以有些属性方法浏览器并不是好的兼容)
18.1.window属性:

window的属性这些对象也有自己的属性和方法:
18.2.window方法:

红框中四个属性谷歌浏览器无效果。分别代表每次移动多少,移动到,每次变大多少,变大到多少。
18.3.例子:
提示框,确定对话框,提示输入对话框

窗口的大小和位置,因为bom并非标准化,(IE支持,谷歌不支持没效果):

滚动条的移动和位置:(IE,谷歌都没问题)(省略了注册点击事件)一般不用

打开新窗口:(省略了注册点击事件)一般不用

定时器的使用:<div id="display"/>

18.4历史记录,前进后退:这种方式是调用浏览器的缓存,前进后退必须有上一个下一个页面才行。

两种方式:


18.5.文档位置信息

18.6窗口的大小:

18.7浏览器的属性

18.8. js获取对象属性实例 :


19.DOM(Document object model)文档对象模型,
当网页加载时,将结构化文档转换为对象树。他并不是一种技术,而是访问结构化文档的一种思想。可以对文档进行增删改,实现文档动态化。

19.dom模型可以看成是由3种节点构成的:
元素节点:标签
文本节点:标签中间的文本
属性节点:修饰标签的属性
19.1获取节点的两种方式:(注意Id的唯一性)
(特别注意谷歌认为换行也是节点,IE却不认为)

利用id获得节点

利用节点关系访问节点:

关于js执行顺序的问题:js是一门解释性语言,可解释一部分执行一部分,对于文档操作,首先需要保证文档已经被加载,才能使用js操作文档,所以一些js主动调用文档的方法写在文档下面。
19.2.dom访问表单数据:



19.3.dom访问列表框:



19.4.dom对表格的操作:






19.5.dom对节点的增删改:(IE不支持下面的创建的方式)





19.6.针对列表和下拉列表的另一种添加节点的方式:(该方式浏览器一般都支持)








19.7.dom对表格增删改:




20.事件:网页元素,可以产生一些可以触发函数方法的事件(行为动作),可以认为这些事件能被js侦探到
事件流:事件的流程,主要分冒泡型事件和捕获型事件。IE只支持冒泡事件,(谷歌火狐)支持DOM浏览器一般支持这两种事件。
冒泡事件:如果元素都有同样的事件,先从子元素开始触发。
捕获事件:如果元素都有捕获事件,那么先从父元素开始捕获。
20.1.改变事件的默认行为:

20.2.浏览器通用方式:2种给事件绑定监听方法



20.3.一些特定浏览器监听方式:


20.3.1.IE浏览器支持:

20.3.2.DOM浏览器支持(谷歌是一种典型的Dom,火狐)

最后一个参数false代表冒泡事件。true是捕获型事件
20.4.事件流:
20.4.1.冒泡事件的例子:IE,谷歌都支持


20.4.2.支持DOM浏览器的捕获型事件测试;

20.5.事件对象:


实例:

20.5.1.常用鼠标事件:



特别注意,双击,不同浏览器(IE和dom模式)的鼠标事件不一样,
谷歌浏览器:

IE浏览器:

标准DOM和IE浏览器他们单击事件相同,双击产生的事件是不同的。
20.5.2.键盘事件监听:

两种浏览器效果相同:

20.6.HTML常用事件:


onunload事件,IE浏览支持,标准DOM不支持效果。
onchange事件,不仅内容改变还要焦点改变才触发。

总结:
来源:http://study.163.com/course/courseMain.htm?courseId=1002905013

浙公网安备 33010602011771号