1、基本类型:string bolean number null undefined
引用类型:引用类型的值是保存在内存中的对象,JavaScript不存于直接操作对象的内存空间,在操作对象时,实际上是在操作对象的引用,而不是实际的对象。当复制保存某个对象的变量时,操作的是对象的引用,但在为对象添加属性时,操作的是实际的对象。
为obj1添加属性后,obj2也可以访问该属性。
var obj1=new object();
var obj2=obj1;
obj1.name="lele";
alert(obj2.name) //"lele"
2、传递参数
向参数传递基本类型的值
function add(num){
num+=1;
return num;
}
var a=1;
var result=add(a);
alert(a); //1
alert(result); //2
向参数传递引用类型的值
function setName(obj){
var obj.name="meimei";
}
var person=new person();
setName(person);
alert(person.name); //"meimei"
证明参数是按值传递的,不是按引用传递的。
function setName(obj){
var obj.name="meimei";
var obj=new obj();
obj.name="yue";
}
var person=new person();
setName(person);
alert(person.name); //"meimei"
3、检测类型
typeOf();
var q="cc";
alert(typeOf(q)); //string
var w;alert(typeOf(w)); //undefind
var e=null;
alert(typeOf(e)); //object
instanceOf()
var a=new object();
var b=1;
alert(a instanceOf object); //true
alert(b instanceOf object); //false
查询标识符
为了确定变量的值,首先搜索getcolor()内是否存在color标识符,没有搜索到后再去上一级作用域搜索。
var color=“blue”;
function getcolor(){
return color;
};
alert(getcolor()); //"blue"
5、引用类型
创建对象实例:
第一种
var person=new person();
person.name="aa",
person.age=12
第二种(最常用)
var person={
name:"hah",
"age":29, //属性名也可以使用字符串
5:true
};
第三种
var person={} //跟var person=new person()相等。
person.name="aa",
person.age=12
function displayInfo(arg){
var output="";
if(typeOf arg.name=="string"){
output="name:"+arg.name+"\n"
}
if(typeOf arg.age==""number){
output="age::"+arg.age+"\n"
}
alert(output);
}
displayInfo
(
{
name:"qq",
age:12
}
);
displayInfo
(
{
name:"rrrrr"
}
);
访问对象属性第一种:alert(person["name"]);
第二种(最常用):alert(person.name);
第一种的有点:(通过变量访问属性)
var proName="name";
alert(person[proName]);
6、array类型
声明创建array
var color=new array();
var color=array();
var color=new array(10);
var color=["red","blue","yellow"];
alert(color[0]); //"red"
color[1]="black" //修改第2项
color[3]="orange" //新增第4项
color[color.length]="white" //新增第5项
color.length=6;
alert(color[5]); //undefined
删除
var color=["red","blue","yellow"];
color.length=2; //删除第3项
alert(color[2]);
转换方法
tostring()、string()、valueOf()
var color=["red","orange","blue"];
alert(color.tostring()); //red,orange,blue
var person={
toString:function(){
return "a";
};
toLocalString:function(){
return "b";}
}
var color={
toLocalString:function(){
return "red";
}
toString:function(){
return “blue”;
}
}
var personColor=[preson,color];
alert(personColor); //a,blue
alert(personColor.toString); //a,blue
alert(personColor.toLocalString); //b,red
数组内添加项
var color=["red","blue","yellow"];
color.push("black"); //添加到数组末尾,可以有任意个参数
color[4]="white"; //添加到数组末尾
var item=color.pop(); //从数组末尾删除最后一项
alert(item);
var color=["red","blue","yellow"];
var item=color.shift(); //删除第一项"red",之后“blue”变成第一项;
alert(item);
var item=color.unshift("aa","bb"); //在数组前端添加任意个项
var value=[1,5,3,4];
value.reverse(); //反转数组项的顺序
alert(value); //4,3,5,1
把数组变成字符串
var a=[1,2,3,w,e];
alert(a.join(.)); //"1.2.3.w.e"
把字符串变成数组
var b="qwerqwr";
alert(b.split(r)); //["qwer","qwr"];
重排序方法
反转数组
var value1=[1,3,2,4,]
value1.reverse();
alert(value1); //4,2,3,1
升序排列
如果第一个参数应该位于第二个参数前面,则返回-1,如果两个参数相等,返回0;如果第一个参数应该位于第二个参数后面,则返回1.
function compare(value1,valu2){
if(value1<valu2){
return -1
}else if(value1>valu2){
return 1;
}else{
return 0;
}
}
var num=[1,3,2,4];
num.sort(compare);
alert(num); //1,2,3,4
降序排列
function compare(value,value2){
if(value1<value2){
return 1;
}else if(value1>value2){
return -1;
}else{
return 0;
}
}
如果都是数值类型或者其valueOf()方法会返回数值类型的对象类型,使用更简单的比较函数,第二个值减第一个值即可
function compare(value1,valu2){
return valu2-value1;
}
在当前数组的基础上创建新的数组:concat()
var color=["red","blue","green"];
var color2=color.concat("yellow",["black","white"]);
alert(color) //red,blue,green
alert(color2) //red,blue,green,yellow,black,white
基于当前数组中的项创建新数组:slice()
var color=["red","blue","green","orange"];
var color2=color.slice(1);
alert(color) //red,blue,green,orange
alert(color2) //blue,green,orange
var color3=color.slice(1,3);
alert(color3) //blue,green,orange