--------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
1、学习javascript的特有语法,为Dom编程和JQuery打基础。
什么是javascript。html是描述网页长相的标记语言,没有计算、判断能力,如果所有计算、判断(比如判断文本框是否为空,判断两次密码是否一致)都放到服务器端执行的话,页面会非常慢,对服务器的压力很大。因此要求能在浏览中执行一些简单的运算、判断。javascript就是一种在浏览器端执行的语言。
javascript简称JS,是解释型语言,js和java没有关系,无需编译就可以随时运行,这样哪怕语法有错误,没有语法错误的部分也还是能正确运行。(即中间有错误,会跳过中间这句,继续执行后面的语句),这和编译型语言有很大的不同。
2、VS2010中有javascript和JQuery的自动完成功能,VS2008需要安装VisualStudio 2008SP1。
3、JS入门
<scripttype="text/javascript">
alert("Hello World!");
</script>
JS代码放入<script>标签中,script可以放到<head>、<body>等任意位置,而且可以有不止一个<script>标签。除了可以在页面中声明javascript以外,还可以将javascript写进单独的js文件中,然后在页面中引入:<scripttype="text/javascript" src="js1.js"></script>.声明到单独的js文件的好处是多页面也可以共享(代码重用)、减小网络流量。
放到<head>中的<script>在<body>加载之前就已经运行,而放在<body>中的代码在<body>中顺序执行。
<script language=....> 这种写法已经不推荐使用。
4、事件
在超链接的点击里执行js,<ahref="javascript:alert(88)">哈哈!</a>,js中也有事件的概念,当按钮被点击的时候也可以执行javascript:
<input type="button"οnclick="alert(99)" value="久久" />和<a href="#" οnclick="alert(88)">哈哈!</a>。超链接中的javascript才需要加 ”javascript:“,因为它不是事件,而是把”javascript:“看成像http、ftp、thunder//、ed2k//一样的网络协议,交由js解析引擎处理。只有href中是个特例。
5、js中的变量
js中既可以使用双引号声明字符串,也可以用单引号声明字符串。主要为了方便和html集成,避免转义符的麻烦。
js中有null和undefined两种特殊变量。null表示变量的值为空,undefined表示变量没有指向任何的对象,未初始化。
js中的变量是弱类型,声明变量的时候无法:int i=0;只能通过var i=0;声明变量,和C#中的var不同,不是C#中那样的类型推断。
js中也可以不用var声明变量,直接用,这样的变量是全局变量,因此除非确实想用全局变量,否则声明的时候最好加上var。//不用var声明的变量是模拟全局变量
js是动态类型的,因此var i=0;i="abc";是合法的。var i=10;表示声明一个变量,名字为i,指向10这个整数,一旦指向10,i就是int类型了。//嫁鸡随鸡,嫁狗随狗。
js判断变量、参数是否初始化的三种方法:
var x;
(1)、if(x==null){alert("null");}
(2)、if(typeof(x)=="undefined"){alert('undefined');}
(3)、if(!x){alert('不x');}
推荐用最后一种方法。
6、函数的声明
function add(i1,i2)//只是声明,不会立即执行
{
return i1+i2;
}
不需要声明返回值类型、参数类型。函数定义以function开头。
var r=add(1,3);alert(r);
r=add("你好","Tom");alert(r);//参数可以是任意类型的,自动重载,比较爽!
js不像C#中那样要求所有路径都有返回值,没有返回值的话,返回值就是undefined。
7、匿名函数
var f1=function(i1,i2){
return i1+i2;
}
alert(f1(1,3));//匿名函数的使用
alert(function(i1,i2){return i1+i2;}(1,3));//直接声明一个匿名函数,并立即使用。
这种匿名函数的用法在JQuery中非常多。
8、js面向对象基础
js中没有类的语法,是用函数闭包(closure)模拟出来的,js中的String、Date等类被叫做对象。js中声明类:
function Person(name,age){//声明一个函数,当成类来使用
this.Name=name;//同C#中动态增加属性:dynamic
this.Age=age;
this.SayHello=function(){
alert("你好,我是"+this.Name+",我"+this.Age+"岁了!");//匿名函数
};
}
var p1=new Person("Tom",20);
p1.SayHello();
必须要声明类名,functionPerson(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加的。
9、Array对象
js中的Array对象是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的强综合体。无需预先制定大小。
var names=new Array();
names[0]="Tom";
names[1]="Jerry";
names[2]="Lucy";
for(var i=0;i<names.length;i++)
{
alert(names[i]);
}
array1.join("|");//将数组数据用“|”连接起来。
Array是一个宝贝,不仅是一个数组,还是一个Directory,还是一个Stack。
var person=new Array();
person["人"]="ren";/字典类型数组
person["口"]="kou";
person["手"]="shou";
alert(person["人"]);或者alert(person.人);
像Hashtable、Directory那样用,而且像它们一样高效。
js中用for进行遍历:for(var nin array){alert(n);}//同C#中的foreach,数组取到的是key的值,而不是value,Directory类型数组取出的是value值
Array的简化:var arr=[1,4,54,32,34,55];//普通数组简化初始化
var arr=["tom":30,"jerry":40];//字典风格的简化创建
获得文档对象的所有成员,(对象的所有成员是以key的形式出现的)
for(var a in document){alert(a);}
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------