【黑马程序员】8. JavaScript
来源:互联网 发布:echo linux 命令@echo 编辑:程序博客网 时间:2024/05/21 17:03
---------------------- 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代码需要放在<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中的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>
functionPerson(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
- 【黑马程序员】8. JavaScript
- 黑马程序员 javascript基础
- 黑马程序员 JavaScript
- 黑马程序员-javascript基础知识
- 黑马程序员-JavaScript读书笔记
- 黑马程序员-JavaScript笔记
- 黑马程序员--JavaScript
- 黑马程序员 javascript笔记
- 黑马程序员《.NET JavaScript》
- 黑马程序员:JavaScript整理
- 黑马程序员 — JavaScript
- 黑马程序员-------JavaScript入门
- 黑马程序员 javaScript
- 黑马程序员-javascript基础知识
- 黑马程序员---Javascript创建对象
- 黑马程序员—Javascript基础
- 黑马程序员-JavaScript学习日记
- 黑马程序员-javascript基本语法
- A. Pythagorean Theorem II
- HDU-1027-全排列
- HDU 2147kiki's game
- [leetcode] Interleaving String@DP
- FleaPHP和ThinkPHP的选择和比较
- 【黑马程序员】8. JavaScript
- poj 2479 Maximum sum && poj 2593 Max Sequence
- POJ 2488 A Knight's Journey
- android 之 handler
- SQL Server 索引结构及其使用
- emacs 快捷键操作
- MyEclipse Java Build Path详解
- ASP.NET中的控件——北大青鸟总结
- Android获取手机像素