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 

posted @ 2017-01-20 15:03  假程序猿  阅读(636)  评论(0)    收藏  举报