一 变量类型和值:
1基本数据类型(传值):
boolean number string
属于弱类型语言,用var声明
2复合数据类型(传引用):
object(对象):
var obj = new Object();
obj.s = “str”;
obj[”n”] = 1;
上面3行简写成:var obj = {”s”:”str”,”n”:1};
用for…in遍历
for(var k in obj){
alert(obj[k]);
}
function(函数):
function funcname(){}
var funcname = function(){};
函数调用funcname(参数);所有参数会装入类似数组的arguments中.
3由object扩展的复合数据类型(传引用):
array(数组):
var arr = new Array();
arr.push(”e1″);
arr[1]=”e2″;
上面3行简写成:var arr = [”e1″,”e2″];
date(日期):
var d = new Date();
d.getTime()//返回1970-1-1开始的毫秒数
d.setTime(ms)//通过1970-1-1开始的毫秒数设置时间
RegExp:
var p = new RegExp(”str”,”g”);
var p = /str/g;
4特殊类型:
undefined:对象声明了但未初始化或者使用了一个并不存在的对象属性
null:如果一个变量值为null,说明他不是有效的对象,数组,数字,字符串或布尔值
Error:异常类型
如何判断变量类型?
对于1基本数据类型和2复合数据类型和undefined使用typeof()方法;
var s=”str”; alert(typeof(s));//输出string
var o={};alert(typeof(o));//输出object
对于3扩展的数据类型,要使用instanceof 关键字
var arr = [0,1,2];
alert(arr instanceof Array);//输出true 注意Array这里是大写
alert(arr instanceof Object);//同样输出true
二 JS实现常用的数据结构
MAP(Hash表,散列表):Object
List(一维多维列表):Array
SET(集合):Object+Array结合起来实现
Tree:Object+Array结合起来实现
JSON:
var js = {”name”:”js”,”age”:10,”friends”:[”c”,”java”,”php”]};
JSON是JavaScript的原生的Tree结构数据表示法
JSON同时是一种数据持久化的实现等价于PHP中的serialize()
在前端JSON可以代替XML以更高的效率完成树型数据的交互
三 JavaScript通过函数实现类的功能
function person(n,a){
this.name = n;//Public属性
this.age=a;
var thisyear = 2008;//Pravite属性
this.yob = function(){//Public方法
var? y = getYearOfBirth(this.age);
alert(this.name+” was born at “+y);
}
function getYearOfBirth(ag){//Private方法
return thisyear-ag;
}
}
var p1 = new person(”aa”,20);//实例化
var p2 = new person(”bb”,25);
p1.yob();//调用Public方法
alert(p2.age);//得到Public属性
alert(typeof(p1));//output:object
alert(p1 instanceof person);//output:true
四 变量作用域
js对于作用域的处理和java还有C基本上一致,和php需要对外部变量引入特殊声明不同.
但还是有一些特殊的地方:
全局变量隶属于其服务的网页的window对象,各个脚本间和直接写在页面里的变量可以相互访问
全局变量声明统一使用var n=1; 可以简写成n=1; 也可以用window.n = 1来定义变量.
局部变量的声明必须使用var来声明,否则将会被认为是全局变量
if(true){
a=1;
var b=2;
}
alert(a);//output:1
alert(b);//output:undefined
JavaScript还支持一种更高级的作用域相关特性–闭包,在程序流程部分通过一个简单实例介绍它.
五 常用内置方法
Math对象包含的方法:Math.random();Math.floor();等等
Global对象包含的方法,直接使用:escape();parseInt();eval();
JavaScript通过eval()方法支持反射
eval()将字符串转换成可执行代码,允许在js执行过程中,根据上下文动态构建js.
eval()也使得用JSON代替XML形成比AJAX更具效率的AJAJ得以实现.