【黑马程序员】8. JavaScript

来源:互联网 发布:echo linux 命令@echo 编辑:程序博客网 时间:2024/05/21 17:03

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

一、        JavaScript简介

JavaScript是一种在浏览器端运行的语言,是一种前端语言,与后台无关。

JavaScriptJAVA没有直接的关系,唯一的关系是JavaScript原名为Live Script,后来吸收了JAVA的一些特性,升级为JavaScriptJavaScript有时被简称为JS

       JavaScript是解释型语言,无需编译就可以直接运行,这样哪怕程序中有的部分语法有错误,但没有语法错误的部分还是会正确执行的;JS是非常灵活的动态语言,不像C#等静态语言那样严谨。开发工具中的JS自动完成功能只是一个辅助,点出来的成员可能不能调用,而点不出来的成员或许还能调用,所以不能过于依赖开发工具。

       JavaScriptHTML一样,也可以用记事本等文本编辑器编写,不过由于效率问题和出现语法错误很难发现等原因,还是用Visual Studio进行开发更为高效。

二、        第一个JS程序

<head>    <title></title>    <script type="text/javascript">        alert(newDate().toLocaleDateString());    </script></head>
说明:上述代码实现的功能是,弹出一个消息框显示系统当前的日期。

alert 函数是弹出一个消息窗口,效果相当于WinForm中的MessageBox

new Date() 是创建一个Date类的对象,默认值就是当前日期。

JavaScript代码需要放在<scripttype="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="点我" onclick="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中的nullundefined表示不同的意思,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#中的stringDate等类,在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>
functionPerson(name,age)可以看作是声明构造函数,NameAge这些属性也是动态添加的。

七、        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

原创粉丝点击