---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
一、 JavaScript简介
JavaScript是一种在浏览器端运行的语言,是一种前端语言,与后台无关。
JavaScript和JAVA没有直接的关系,唯一的关系是JavaScript原名为Live Script,后来吸收了JAVA的一些特性,升级为JavaScript。JavaScript有时被简称为JS。
JavaScript是解释型语言,无需编译就可以直接运行,这样哪怕程序中有的部分语法有错误,但没有语法错误的部分还是会正确执行的;JS是非常灵活的动态语言,不像C#等静态语言那样严谨。开发工具中的JS自动完成功能只是一个辅助,点出来的成员可能不能调用,而点不出来的成员或许还能调用,所以不能过于依赖开发工具。
JavaScript和HTML一样,也可以用记事本等文本编辑器编写,不过由于效率问题和出现语法错误很难发现等原因,还是用Visual Studio进行开发更为高效。
二、 第一个JS程序
<head>
<title></title>
<script type="text/javascript">
alert(newDate().toLocaleDateString());
</script>
</head>
说明:上述代码实现的功能是,弹出一个消息框显示系统当前的日期。
alert 函数是弹出一个消息窗口,效果相当于WinForm中的MessageBox。
new Date() 是创建一个Date类的对象,默认值就是当前日期。
JavaScript代码需要放在<script type="text/javascript"></script>标签中,<script>标签可以放在<head>、<body>等任意位置,一个HTML页中可以有不只一个<script>标签。放在<head>中的<script>,在<body>加载之前就已经运行完毕,而写在<body>中的<script>是随着页面的加载自上而下一个个执行的。
当然,JS除了可以直接写在HTML页中,还可以将JS写到一个单独的Jscript文件中,此文件是以.js为扩展名的,写入.js文件后,需要在HTML页中引用它,引用的方法见如下代码:
<script src="share.js" type="text/javascript">
</script>
其中,src属性指向的就是你的.js文件的文件名。引用Jscript文件的代码可以写在在<head>、<body>等任意位置。
三、 事件
事件(event)
用于描述发生了什么事情,用户的鼠标或键盘操作(点击,文字输入,下拉框的选中)以及其他的页面操作(页面的加载和卸载)都会触发相应的事件。
JavaScript中也有事件的概念,当按钮被点击时也可以执行JavaScript代码。
如:
<input type="button" value="点我" οnclick="alert('我是个Button')" />
当按钮被点击时执行控件的onclick属性所指向的代码。上述代码功能:当点击按钮时,弹出一个消息窗口显示“我是个Button”。
在超链接<a>的href属性中执行JavaScript代码的方法:
<a href="javascript:alert('我是超链接')">再点我</a>
如上代码中可以发现,在超链接的href属性中执行JavaScript程序时需要加上“javascript:”,这是因为在href中它并不是一个事件,而浏览器会把“javascript:”看成类似于“http://”、“ftp://”一样的网络协议把它交给JS解析引擎处理。
只有在“href”中执行JS程序时才需要加“javascript:”。
超链接中的点击事件和其它控件的差不多,都是放在onclick中的。
常用的事件类型:
OnClick 组件被点击
onDbClick 组件被双击
onLoad 页面加载
onUnload 页面卸载
onChange 组件内容发生变化或条目选中状态发生变化
onMouseMove 鼠标移动
onFocus 获得焦点
onBlur 失去焦点
四、 JavaScript变量
命名规则:
<1>必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号、数字
<2>变量名要区分大小写
<3>不允许使用javascript关键字做变量名。
<4>使用var声明变量,变量声明时不指定具体数据类型,其具体数据类型由给其赋的值决定。也可以不经声明而直接使用变量,但必须先赋值再取值。
JavaScript中的字符串既可以用双引号也可以用单引号。
JavaScript中的null和undefined表示不同的意思,null表示变量的值为空,而undefined表示变量未指向任何对象,也就是没有初始化,表示“没有”。
JavaScript是一种弱类型的语言,不强调变量的类型具体是什么,在JS中声明变量用关键字var,声明的变量可以重复赋值。如下代码在JS中是正确的:
var i=10;
i="abc";
alert(i);
也就是说变量i 可以指向任意类型的值。
五、 JavaScript函数的声明
JS中声明函数时不需要指定返回值类型和参数类型。函数声明以关键字function开头。
<script type="text/javascript">
//JS中声明一个函数,以function关键字开头,不需要指定返回值类型和参数类型
function add(i1,i2) {
return i1+i2;
}
alert(add(10,10));//调用函数
</script>
JS中并不要求所有的路径都要有返回值。
如果函数中有返回值那么就返回该返回值;否则就返回“undefined”。
JS中的匿名函数:类似于C#中的匿名函数,先声明一个匿名函数,然后用一个委托指向这个匿名函数,就可以把这个委托当作匿名函数来用了,在JS中也是相同的原理。
//JS中声明一个匿名函数,定义一个委托变量f1来指向这个匿名函数
var f1=function (i1,i2) {
return i1+i2;
};
alert(f1(5,5));//通过委托来调用匿名函数
//声明一个匿名函数,立即使用
alert(function (i1,i2) { returni1+i2}(5,10));
六、 JavaScript面向对象基础
JavaScript中没有类的概念,而是用函数闭包(closure)来模拟类的实现。C#中的string、Date等类,在JavaScript中都被叫做“对象”。
<script type="text/javascript">
function Person(name,age) {
this.Name=name;//动态添加属性
this.Age=age;
this.SayHello=function () { alert("你好,"+this.Name) };//匿名函数
}
var p1=newPerson("jack",30);//new一个Person“类”的对象
p1.SayHello();
</script>
function Person(name,age)可以看作是声明构造函数,Name,Age这些属性也是动态添加的。
七、 Array对象
JS中的Array对象就是数组,它是一个动态数组,而且是一个像C#中的数组、ArrayList、Hashtable等的超强综合体。
数组是多个相同类型数据的组合,实现对数据的统一管理。
Javascript 数组的声明方式:
var a = new Array();
var b = new Array(size);
var c = new Array(v1,v2,v3, …);
var d = [ 1,2,3,4...];
Javascript 数组长度可变,数组对象的length 属性表明了该数组的长度。
数组元素访问格式:数组名[元素下标]
有效元素下标的范围:0~length-1;
Shift:删除数组的第一项,并返回删除元素的值;如果数组为空则返回undefined。
Unshift:将元素添加到数组的开关,并返回数组的长度。
Pop:删除数组的最后一项的值,如果数组为空则返回undefined。
Push:将数组添加到另一个数组的尾部,并返回数组的长度。
Concat:返回一个新的数组,将数组添加到原数组中。
Reversse:数组反转a.reverse()。
Sort:数组排序。
Slice(start,end):截取数组元素。
Join(separator):将数组的元素以separator为分隔符组成新的字符串,separator默认是以逗号分隔。
var arr=newArray();
arr[0] ="tom";//添加数组元素
arr[1] ="jack";
arr[2] ="john";
//遍历数组中的元素
for (var i=0; i<arr.length; i++) {
alert(arr[i]); //打印的是数组的 Value
}
//数组的简化声明方式:
var m= [5,6,7,8];
//JS中的for循环可以像C#中的foreach一样用
for (var einm) {
alert(e); //打印的是数组的 Key
}
Array当作字典来用:
//声明一个Array对象用作Dictionary并进行初始化
var dict= { "tom":30,"jack":28,"Mecheal":35 };
alert(dict["Mecheal"]);
普通数组可以看做是Dictionary的特例,也就是Key为已知的0,1,2,3,4…...。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net