我们学习一门新的编程语言或者脚本语言,我们首先先要了解一下这门语言的特性与其他语言的区别。但我们讲这门语言的特性之前,我们先来了解一下什么是面向过程与面向对象。
面向对象:是一种以事物(对象)为中心编程思想,把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为描述某个事物在整个解决问题的步 骤中的行为,它是以事件或消息来驱动对象执行处理的程序设计技术,面向对象的特性是抽象、封装、继承、多态(java面向对象程序设计 第二版)。如何合理 组织对象,以及对象之间的关系可以使用设计模式来设计,提高代码质量(java设计模式)。
封装:private(只能在本类中透明,子类不能继承)、procted(子类或者同一个包中可以透明)、public (对所有类共享)、默认的(在同一个包中)
继承:抽象类:可以包含public prvate procted变量和常量、以及抽象或者具体函数,但子类只能单继承。接口:只能包含public的常量以及public的抽象函数
接口可以继承接口,但不可以继承一般的类,接口不能实现接口。继承抽象类时,需实现它的抽象函数。
如果子类对象在同一个包中的其他类声明,则只能访问父类的public
如果子类有同名的成员变量,该父类该变量就被隐藏,只能用super访问(super,this不能再static方法中使用),而子类有与父类完全相同的函数,(方法 名、返回类型、参数个数、参数类型都相同),则该父类函数被覆盖(重写),只能使用super访问父类被覆盖的方法。不管是子类对象,还是上转型对 象(子类对象赋值给父类对象)访问被覆盖方法时,只能访问子类的方法,有多个子类覆盖该方法时,就有不同形式,所以体现了多态,
父类成员变量被赋值时,被子类继承的那个成员变量没有影响,因为子类与父类是处于两个独立内存空间的。
final 类不能有子类,final方法不能被子类覆盖,常量不占用内存。
重载是指一个类中有相同的方法,但它们的参数类型、参数个数不同。
面向过程:是一种以过程为中心编程思想,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向切面编程:aop编程就是把我们在某个方面的功能提出来与一批对象进行隔离,这样与一批对象之间降低了耦合性,可以就某个功能进行编程,添加到需要这功能的对象 中去。
类:把具有相同特性或者行为的对象封装 成类。
对象:事上万物皆是对象,每个对象都有属性与行为。
面向对象程序设计:需求-》设计-》开发-》测试-》运行。
我们讲javascript主要讲以下内容:
javascript脚本语言特性与它的历史背景、规范、数据类型、变量、运算符、控制语句、函数、事件处理、常用对象、DOM技术。
javascript脚本语言特性
1.解释性: 所有的脚本语言,比如vbscript、python、perl或者doc、shell等脚本都不用经过编译器编译,就可以被电脑解释器解释执行,而像java、c++、c语言等编程语言 都需要进行编译,并形成二进制文件,他们执行就不用通过验证是否有语法错误,所以运行速度比脚本语言还要快。
2 基于对象:javascript是基于对象,它可以使用和创建对象,但是它不能利用现有的对象生成新的对象,也就是继承。
3 事件驱动:javascript是通过对客户端产生的事件进行响应的,无需经过服务器。
4 安全性:javascript不能访问本地硬盘数据,也不能写入数据到服务器,同时不能对网络文档进行修改与删除,只能通过浏览器浏览信息与动态交互。
5 跨平台:javascript依赖于浏览器,有支持的浏览器就可以运行。
规范
区分大小写、每行的分号可有可无,变量是弱类型的,用var声明变量,变量类型的确定是由它的初始值确定的,注释用//与/* */。
数据类型
字符或者字符串都一样用'' 或者'' ''标识都可以,数值型有整型和浮点型,整型可以用0x1十六进制、1十进制、01八进制表示,浮点型只能用十进制表示,但可以用科学计数法表示,1.6E5=1.6*10的5次方=160000 1.6E-5=1.6*10的负5次方=0.000016 布尔类型有true与false,可以用1或者0表示null、" ",常见的转义字符:\t TAB符、\r回车符、\n换行符、\"双引号、\xnn十六进制代码nn表示字符、\0nnn八进制代码nnn表示字符、 \unnnn十六进制代码nnnn表示unicode字符,null表示空值或者该引用不存在,undefined表示没有声明的变量或者声明了一个没有赋值的变量(java中对象会赋值null)。NAN表示错误,用方法表示isNAN(表达式或者变量)是否错误。object,functon也是对象类型
变量
命名规则可以使用字母,下划线作为开头,由字母、数字、下划线组成。 有全局变量和局部变量。
运算符
赋值运算+= a=a+b=>相当于a+=b; 算术运算+、-、*、/求整数、%求余数、++、-- a++与++a不同,比如b=a++是先把a赋值给b,再自增1;
比较运算>、<、!=、<=、>=、===、==。其中===是包含类型判断比如'12'==12是true的,但‘12’===12是false的,因为字符类型与数值类型不一致;
逻辑运算(java中的)!、&&短路与,前面为假时就不算后面的了、||、^同值为假,异值为真、|先计算两边表达式的值再进行或运算、&;
位运算~a按位取反、a<<b a左移b位,右边补零、a>>b a右移b位,若a的最高位为1也就是负数,左边补1,否则补零、a>>>b a右移b位,左边补0、&、a^b a和b按位异或相同值为0,异值为1、| 与逻辑运算不同是操作对象不同,位运算是整型或者字符,逻辑运算操作对象是布尔型。
条件运算:操作数?结果1:结果2 如果操作数为true则选择结果1,否则为结果2.
运算符优先级:() 。 【】 ++ --(先用后增) ++ --(先增后用) +- (正负号) ~ !(按位非、逻辑非) new * / % + - << >> >>> < <= > >= == != & ^ | && || ?: =
int a3,b=8,c; c=a+++b ; a=4,b=8,c=11,相当于c=a++ +b;先用后增,所以3+8=11,3+1=4;
控制语句
if if(布尔表达式)... else if else if (布尔表达式)else
for for(表达式1;表达式2;表达式3){} for(数据类型 对象:数组对象)
while while(布尔表达式){} do{}while(布尔表达式)
switch switch(表达式) {case 常量或者由常量组成的表达式:执行体;break;...default :执行体;} 表达式是一个整型 所以只能使用int short byte char不能使用long string 如果没有break则满足条件后不退出,还进行下面的判断,没有defaul又没有条件满足的,则不执行。
break break是用来退出for while switch循环的 分为有标号的和无标号的,比如flag:for(){ for(){ break flag;}}
continue 用来执行下个循环,它后面的语句不执行了。 也分为有标号的和无标号的
return 退出函数体
goto
函数
函数的结构体为 function 函数名(参数1,参数2...){函数体 ; 可有可无的return 返回的结果;},函数调用的方式有一下几种,比如onload=函数名();或者在html产生事件时,调用,<input type='button' onclick="函数名()" id=""/>。
事件处理
事件就是对操作对应的浏览器页面时会产生一个事件,比如你单击页面中的一个按钮就会产生一个事件,处理就是当事件产生时调用函数进行处理。不同的对象有不同的事件,按钮有按钮的,键盘有键盘的,鼠标有鼠标的,windows对象也有事件。常用的一些对象事件如下:
(1)单击事件:onclick。用户单击鼠标按键时产生的事件,同时。nclick指定的事件处理程序或代码将被调用执行.
(2)改变事件:onchange。当text或textarea元素内的字符值改变或select表格选项状态改变时发生该事件。
(3)选中事件:onselect。当text或textarea对象中的文字被选中时会引发该事件。如:
<ipnut type="text" value="默认信息”onselect=alert(”您选中T文本框中的文字”)>
(4)获得焦点事件:onfocus。用户单击text或textarea以及select对象,即光标落在文本框或选择框时会产生该事件。如:
<select name= "zhengjian" onfocus=alert(”我成为焦点”)>
(5)失去焦点事件:onblur 失去焦点事件正好与获得焦点事件相对,当text或textarea以及select对象不再拥有焦点而退出后台时, 引发该事件。
(6)载人文件事件:onload 当页面文件载人时产生该事件。onload的一个作用就是在首次载人一个页面文件时检测cookie的值,并 用一个变量为其赋值,使它可以被源代码使用,本事件是window的事件,但是在HTML中指定事件处理程 序时,一般把它写在<body>标记中。如:<body onload=alert(”正在加载页面,请等待一”)>。
(7)卸载文件事件:onunload。与载人文件事件。nload正好相反,当Web页面退出时引发的事件,并可更新。ookie的状态。如:
<body onunload=confirm(”你确定要离开本页?”)>
(8)鼠标覆盖事件:onmouseover。 onmouseover是当鼠标位于元素上方时所引发的事件。如:
<input type= "boutton" value=”按钮”onmouseover= "window. status=‘请您注意下面的状 态栏·;return true">
(9)鼠标离开事件:onmouseout。 onmouseout是当鼠标离开元素时引发的事件。如果和鼠标覆盖事件同时使用,可以创建动态按钮 的效果。
(10)鼠标释放事件:onmouseup 释放任意一个鼠标按键时触发。
(11)鼠标单击事件:onmousedown 单击任何一个鼠标时触发。
(12)鼠标移动事件:onmousemove 鼠标在某一个元素移动时触发。
(13)鼠标双击事件: ondbclick 鼠标双击左键时触发。
(14)键盘事件
onkeypress:当键盘上的某个键被按下并且释放时触发的事件,要求页面内必须有激活的对象。
onkeydown:当键盘上某个键被按下时触发的事件,要求页面内必须有激活的对象。
onkeyup:当键盘上某个键被放开时触发的事件,要求页面内必须有激活的对象。
15)页面相关事件
onabort:图片在下载时被用户中断时触发的事件。
onbeforeunload:当前页面的内容将要被改变时触发的事件。
onscroll 在任何带滑动条的元素或者窗口上滚动时 触发。
onerror 出现错误时触发。
onresize 窗口或者框架大小发生变化时触发。
onreset 单击重置按钮时在<form>上触发。
onsubmit 单击提交按钮时在<form>上触发。
处理的方式有两种,一种是在html中,一种是在javascript中。document.getElementById("id").onclick=function(){ alert("你单击了我!");}
<input type="button" onclick="alert(你单击了我!);" id="id"/>
常用对象
javascript是基于对象的,所以它可以使用内置的一些对象。其中windows对象是全局对象,是所有对象的*对象,是对象就有属性和方法,windows对象也提供了属性和方法来操作浏览器页面的内容。但它不用new来创建实例就可以直接调用它的方法
windows常用属性
document window对象的子对象document是javascript的核心对象 window.document.事件 window.document.方法 window.document.属性
history window对象的子对象document是javascript的核心对象 window.history[数值] window.history.方法() window.history.属性
location 给出当前窗口的URL信息或指定打开窗口的URL。window.location=URL
frames 表示当前所有frame对象的集合
status 一个可读写的字符,用于指定状态栏的当前信息
name 用于存放窗口对象名称
length 窗口或框架包含的框架个数
defaultStatus 一个可读取的字符,用于指定状态栏的默认消息
navigator 可以获得浏览器的相关信息
self 当前窗口
parent 表示包含当前窗口的父窗口
top 表示最顶层的浏览器窗口
opener 表示打开当前窗口的父窗口
closed 表示当前窗口是否关闭 当浏览器窗口关闭时,它的windows对象并不会消失,只是把closed设置为true
windows常用方法
alert(字符串) 警告
comfirm() 确认
prompt() 提示
close() 关闭
open(URL,窗口名称,窗口风格)) 打开
home()模拟用户点击浏览器上的“主页”按钮,将页面转到指定的页面上。
back()仅当当前页面存在上一页时才能进行该操作。
find()当触发该方法时,将弹出一个“find”(查找)对话窗口,并允许用户在触 发find方法的页面中查找一个字符串。
stop()模拟用户点击浏览器上的“停止”按钮,终止浏览器的下载操作。
forward()仅当当前页面存在下一页时才能进行该操作
setTimeout(毫秒)
setInterval("函数名",毫秒) 周期性执行指定的代码
clearInterval()清除
captureEvent(事件1|事件2|...|事件n) 捕捉指定参数的所有事件。由于能够捕获哪些由本地程序自己处理的事件 ,所以程序员可以随意定义函数来处理事件。如果有多个事件 需要捕捉,各事件 之间用管道符“|”隔开。 Event.CLICK。。。
String对象
String对象必须先创建实例对象后才能,调用它的属性和方法,但用单引号或者双引号括起来的字符串可以当做字符串的对象实例,可以调用它的属性和方法。
var str=new String();
var arr=new Array("1","2");
属性:length
方法:
charAt():返回在指定位置的字符。
concat():连接两个字符串文本,并返回一个新的字符串。
indexOf():indexOf() 方法返回指定值在字符串对象中首次出现的位置。
match():使用正则表达式与字符串相比较。
replace():被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串。
slice():摘取一个字符串区域,返回一个新的字符串。
split():通过分离字符串成字串,将字符串对象分割成字符串数组。
substr():返回字符串中从指定位置开始到指定长度的子字符串。
substring():返回字符串两个索引之间(或到字符串末尾)的子串。与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。
trim():删除一个字符串两端的空白字符。
date对象
显示日期或者时间,必须用new的创建它的实例。
var date=new Date();
getFullYear() getMonth() getDay getDate getHours() getMinutes getSeconds 注月份默认是当前月-1,所以得出得出结果应该加1
Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,不是某个对象的方法。您无需创建它,通过把 Math 作为对 象使用就可以调用其所有属性和方法。
Math.abs(x):可返回数的绝对值
Math.ceil(x):向上取整
Math.floor(x):向下取整
Math.max(x,y):最大值
Math.min(x,y):最小值
Math.random(x):随机数
Math.round(x):四舍五入
Math.sqrt(x)x的平方
DOM技术
暂时推荐大家看这篇文章,到时候会更新jsp中如何用dom与sam技术解析json、xml
http://www.cnblogs.com/kissdodog/archive/2012/12/25/2833213.html