学习一门新语言,重点掌握数据类型、程序结构、类库。HTML:提供内容。CSS:美化CSS,告诉HTML怎么去显示。JavaScript:控制HTML、CSS。
JavaScript是一种在浏览器端执行的语言。JavaScript是解释型语言,无需编译就可以随时运行,这样哪怕语法有错误,没有语法错误的部分还是能正确运行。
JavaScript代码放到<script>标签中,script可以放到<head>、<body>等任意位置,而且可以有不止一个<script>标签。alert函数是弹出消息窗口,new Date()是创建一个Date类的对象,默认值就是当前时间。JS是大小写敏感的。
放到<head>中的<script>在body加载之前就已经运行了。写在body中的<script>是随着页面的加载而一个个执行的。
除了可以在页面中声明JavaScript以外,还可以将JavaScript写到单独的js文件中,然后在页面中引入:<script src="test.js" type="text/javascript"></script>。声明到单独的js文件的好处是多页面也可以共享、减小网络流量。js文件的CDN(*)
注意:不要写成<script src="test.js" type="text/javascript"/>否则会有问题,这是一个比较特殊的地方。
在超链接的点击里执行JavaScript:<a href="javascript:alert(‘88’)">发发</a>。
JavaScript中即可以使用双引号声明字符串,也可以使用单引号声明字符串。JavaScript是弱类型,声明变量的时候无法:int i=0;只能通过var i=0;声明变量,和C#中的var不一样,不是C#中那样的类型推断。JavaScript中也可以不用var声明变量,直接用,这样的变量是“全局变量”,因此除非确实想用全局变量,否则使用的时候最好加上var。JS是动态类型的,因此var i=0;i="abc";是合法的。
JavaScript中判断变量、参数是否初始化的三种方法:
var x;
if (x == null) {
alert("null");
}
if (typeof (x) == "undefined") {
alert('undefined');
}
if (!x) {alert('不x');}
if(x){}//变量被初始化了或者变量不为空或者变量不为0.
JavaScript中声明函数的方式:
function add(i1, i2) {
return i1 + i2;
}
int add(int i1,int i2)//C#写法
不需要声明返回值类型、参数类型。函数定义以function开头。
var r = add(1, 2);
alert(r);
r = add("你好", "tom");
alert(r);
JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined。
易错:自定义函数名不要和js内置、dom内置方法重名,比如selectall、focus等函数名不要用。
匿名函数:
var f1 = function(i1,i2){
return i1 + i2;
}
alert(f1(i1,i2));
js面向对象:
function Person(name,age) {
this.name = name;
this.age =age;
this.sayHello=function(){
alert("你好,我是"+this.name+",我"+this.age+"岁了");
}
}
var p1 = new Person("tom",20);
p1.sayHello();
必须要声明类名,function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。var p1 = Person("tom", 30);//不要丢了new,否则就变成调用函数了,p1为undefined。new 相当于创建了函数的一个实例
String对象:length属性;charAt方法;取第几个字符。indexOf字符第一次出现的索引 lastIndexOf字符最后出现的索引 Substr(start,length)、substring(start,end):start从0数,end从1数 split match、replace第一个参数是字符串时只替换第一个,用var reg=//g;替换全部、search方法,正则表达式相关。g:全局匹配 i:忽略大小写 gi:以上组合
JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的超强综合体。数组是Dictionary的特例用法
var names = new Array();
names[0] = "tom";
names[1] = "jerry";
names[2] = "lily";
for (var i = 0; i < names.length; i++) {
alert(names[i]);
}
Array还可以有简化的创建方式
var arr = [3, 5, 6, 8, 9]; 普通数组初始化
字典风格的简化创建方式:
var arr = {"tom":30,"jim":20};
js中遍历数组和字典得到的是key值。冒泡排序:N个数排序,外层循环N-1;内层循环N-i-1
function mySort(arr) { for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j < arr.length - i-1; j++) { if(arr[j]>arr[j+1]){ var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } }
对于数组风格的Array来说,可以使用join方法拼接为字符串。var arr = ["tom","jim","lily"];alert(arr.join(","));//JS中join是array的方法,不像.Net中是string的方法。for循环可以像C#中的foreach一样用。for循环还可以获得一个对象所有的成员,类似于.Net中的反射
for (var e in document) {
alert(e);
}
有了它没有文档也可以进行开发。
*扩展方法
String.prototype.quote = function(str) {}