Javascript

Javascript是一种由Netscape(网景公司)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,为客户提供更流畅的浏览效果。
Javascript是一种基于对象和事件驱动并具有相对安全的客户端脚本语言

Javascript与Java

语言执行方式:
Javascript为解释语言
Java为编译语言
语言数据结构:
Javascript为弱类型变量/语言
Java为强类型变量/语言
语言环境:
Javascript依附于HTML,嵌入在HTML文件中
Java使用独立的*.java文件
编程模型
Javascript基于对象
Java面向对象

Javascript特点

1、JavaScript是一种脚本编写语言
JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个简易的开发过程。
基于对象的语言
2、JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。

3、简单性
JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。

4、安全性
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。

5、动态性的
JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。
6、跨平台性
JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。

Javascript定义规则

1、直接在HTML文档中创建Javascript
格式:
<script language=“javascript” type=“text/javascript”>
  //js脚本语句
</script>
注意:js直接定义在网页文件中时,通常定义在head标签内,也可以出现在网页中的任意位置。
alert方法简介:在网页窗体中弹出一个对话框,显示用户自定义数据,一旦执行到该语句,网页将挂起(隶属于window对象的方法)

2、使用独立的js文件创建Javascript
定义格式:
创建独立的*.js文件,将脚本语句写入该文件
使用格式
 <script language=“javascript” src=“demo.js”   type=“text/javascript” >
 </script>
注意:由于独立的js文件只用于保存javascript脚本语句,因此该文件中不能包含<script>标签

将具有公共共性功能的js抽取出来放置到独立的js文件中,使用时导入到页面中
将每个页面独有的js脚本写入页面内使用<script></script>标签时,如果存在有src属性,则src属性导入的脚本语句将覆盖当前<script></script>中所包含的脚本语句

Javascript常量

整型常量,可用十、八、十六进制表示
浮点常量,可用整数、分数、小数点,指数组成
布尔常量
字符串常量
null常量
特殊常量:undefined(对象成员)

Javascript变量

在程序执行过程中值可变的量,是系统内存中的一个命名的存储单元。

通过var关键字定义变量,该变量可以赋予不同类型的常量。

变量名定义规则严格遵照驼峰命名法则。
 如:  myString,   name
变量名大小写敏感
声明(定义)变量:var(可以省略)

var x, myString;

var y=100, st=“hello”;

Javascript运算符

算术运算符:+(特殊), -, *, /, %, ++, --
逻辑运算符:&&,||,!
比较运算符:==, >, >=, <, <=, !=,===
字符串运算符:
位操作运算符:&,|,^,~,<<,>>,>>>
赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,!=,^=,<<=,>>=,>>>=
条件运算符:a?b:c
其他运算符:. []  delete new typeof void

Javascript语句

if,switch,while,do while,for.

IF语句    

if(条件表示式){
  //条件表达式为真时执行的语句序列
 }

if...else语句

if(条件表示式){
  //条件表达式为真时执行的语句序列
 } else{
  //条件表达式为假时执行的语句序列
 }

switch语句

switch(表达式){
  case 值1: 语句序列1; [break;]
  case 值2: 语句序列2; [break;]
  case 值3: 语句序列3; [break;]
  case 值4: 语句序列4; [break;]
  default: 语句序列;
 }

for语句

for ([语句 1]; 语句 2; [语句 3]) {
  [语句4]
 }
语句1在循环(代码块)开始前执行
语句2定义运行循环(代码块)的条件
语句3在循环(代码块)已被执行之后执行
语句4循环执行的代码块

while语句

while(条件表达式){  

  //循环体代码块  

}

 

 do{   

  //循环体代码块

 }while(条件表达式);

js特有的语句:        

with语句
访问某个对象的多个属性和方法时可以简化书写格式
new操作符
创建对象
delete操作符
从对象中删除属性和方法
从数组中删除元素
删除对象
this运算符
当前对象的引用表示格式 

for…in…语句

用于遍历一个对象的所有属性,对于每一个属性,循环体内的语句被执行一次。  for (变量名 in 对象名){   循环内容;  } 该循环也可以用于循环数组,只需要将数组中的每个下标当成是数组对象的属性名称即可 

数组

数组可以存放很多相同类型的数据。用数组名代表所有这些数据,而用数组名[下标]表示其中某个元素(下标从0开始)。
数组的长度属性:length
数组名.length  返回数组中元素的个数

定义数组

第一种:使用[],创建数组的同时赋初值
var myA=[“张三”,“李四”,“王五”];   
var b=[10,20,30,40];
第二种:使用new 操作符创建数组的同时赋初值
var myA=new Array(“张三”,“李四”,“王五”);  
第三种:先创建长度为n的数组再赋值
var anArray = new Array(9);       
anArray[0]=“张三”;
anArray[1]=“ 李四”;

函数

函数是一个设定名字的一系列javascript语句的有效组合,相当于JAVA语言中的方法。
定义函数可以携带参数,也可以不携带参数
定义函数不对返回值进行设计,但是函数可以根据需要进行值的返回

定义规则:
function 函数名([参数列表]) {  
 //脚本语句
}

调用规则:
函数名([参数1,参数2,……]) ;
调用函数时可以不按照函数定义的参数进行传参
调用函数时,如果原函数没有设置返回操作,则调用结果为undefined

function内部封装了一个属性arguments,该属性封装了被调用函数运行时所携带的所有参数,该属性是一个数组模型

函数定义与调用冲突

函数在定义时如果同一个函数名称被多次定义,则以最后一次定义为准(覆盖)。
函数在调用时如果不加参数设定,则函数本身被认定为函数对象的引用
toString方法简介:返回任意对象的字符串表示形式

动态函数定义规则

定义格式:
格式1:
函数名 = new Function(“参数列表”,“函数体”);
格式2:
函数名 = new Function(“参数1”, “参数2”, “参数 3”, ……,“参数n”,“函数体”);
调用格式:
函数名(参数列表);

动态函数定义冲突

动态函数定义时,如果两个动态函数使用了相同的名称,则定义位置处于下方的为最终定义
当动态函数与一般函数定义名称冲突时,动态函数将无视一般函数的定义,起主导作用

匿名函数定义规则

定义格式:
函数名 = function(参数列表){
  //函数体
}
调用格式:
函数名(参数列表);

匿名函数定义冲突

匿名函数定义时,如果两个匿名函数使用了相同的名称,则定义位置处于下方的为最终定义
当匿名函数与一般函数定义名称冲突时,匿名函数将无视一般函数的定义,起主导作用

Javascript中的已定义好的一些对象。     

String,Math,Date,Array,Function这些对象都有一个属性叫做prototype原型.     

内置对象功能扩展

对已有对象模型进行功能的追加
定义格式
对象名.prototype.自定义操作名称 = 追加操作名
原形
原形描述的是Javascript中任意对象的父级抽象对象模型
prototype即获取Javascript中任意对象模型的原形

Javascript自定义对象

使用函数模拟类似Java中的类模型
创建自定义类型对象
var  objName = new 自定义函数名(参数列表);
为自定义对象声明属性
objName.property = value;
为自定义对象声明行为
objName.method = function(){ …}
使用按照对象的格式调用
objName.property 或 objName[“property”]
objName.method(arg);

使用this描述属性与行为
定义格式:
 function 自定义对象名(){
     this.propertyName = null;
     this.propertyName = value;
     this.methodName = function(){ … }
     this.methodName = otherMethodName;
 }
otherMethodName可以是定义在任意位置可访问的function名称

Javascript伪继承

设定自定义对象的原型为自定义对象就实现了自定义对象的功能扩展。从形式上模拟了Java语言中的继承特性,但这不是真正意义上的继承。
区别:
Java中的继承是类A继承类B
Javascript中的伪继承是自定义function可以从其他自定义function的实现对象(具体)扩展,以Java语言的描述形式就是类A继承类B的实例

设定自定义对象的原型为自定义对象的原型也可以实现了自定义对象的功能扩展。从形式上模拟了更接近Java语言中的继承特性。

总结:

当有多个html页面使用到相同的JS脚本时,可以将js代码封装到一个文件中,只要在script标签的src属性引入一个js文件。(方便后期维护,扩展)扩展性更强

动态函数与匿名函数同时出现并具有相同的方法名称时,定义位置处于下方的为最终定义,两者相互覆盖

当Array对象只接收到一个参数值时,如果这个参数是整数,Javascript就认为这个数定义数组的大小,如果这个参数不是整数,Javascript就认为这是数组的第一个元素的初值。

数组的长度会跟随使用元素的数量追加发生变化。

 

 

 

 

 

posted @ 2013-11-15 20:53  小痞  阅读(342)  评论(0编辑  收藏  举报