创建Object实例的方式有2种:
var person = new Object();
person.name = “lala”
person.age=18;
或者对象字面量的方法(更推荐这个方法,达到一种封装)
var person = {
name : "lala",
age : 18;
};
里面的name和age也可以加""
弄个例子,这个比较常用吧
function displayInfo(args){
var output = “”;
if (typeof args.name == “String”){
output += “Name:”+args.name+"\n";
}
if (typeof args.age == “Number”){
output += “Age:”+args.age+"\n";
}
alert(output);
}
dispalyInfo({
name:“lala”,
age:18,
toString : function(){
return name+"Age:"+age;
}
});
访问对象属性的时候,我们可以采用方括号的形式[]
例如:
alert(person[“name”]);
这种访问方式的优点是,可以通过变量名来访问
我们还是建议采用点表示法。
Array类型
大小随便,每个数组的元素类型也随便
创建:
var colors = new Array();
或者
var colors = new Array(10); //包含10项的数组
或者
var colors = new Array(“Blue”,“Red”,“Green”);
或者不需要new
var colors = [“Blue”,“Red”,“Green”];
访问:
alert(colors[0]); //显示Blue
增
colors[3]=“Yellow”; //增加第4项
改
colors[1]=“Black”; //替换Red为Black
数组的length属性保存着该数组的项数
这个属性很有意思,不只是读得
例如
var colors = [“Blue”,“Red”,“Green”];
colors.length = 2;
alert(colors[2]); //undefined
所以利用该属性,我们可以在末尾增加新的元素
例如:
var colors = [“Blue”,“Red”,“Green”];
colors[colors.length] = “Black”;
数组别太长了,要不然会导致运行时间超长的脚本错误
检测数组:
if (value instanceof Array){
…
}
instanceof操作符的问题在于,它假定单一的全局执行环境。如果网页中包含多个框架,那么实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。如果你从一个框架向另外一个框架传入一个数组,那么传入的数组与第二个框架中原生创建的数组分别具有不同的构造函数
所以我们可以用Array.isArray()函数来判断一个值是不是数组
if(Array.isArray(value){
…
}
使用toString函数把数组的每个项,用,来串起来
使用join函数,也把数组的每个项,用join(***)中的***来串起来
栈方法的数组增删
push(可以多个参数) 返回当前数组长度
pop(无参数) 返回被删除的最后一项
队列放到的数组增删
push(可以多个参数) 返回当前数组长度
shift() 返回被删除的最前一项
数组重排序方法:
reverse() //反转数组
function compare(value1,value2){
if(value1 < value2){
return -1;
}else if {
return 1;
}else{
return 0;
}
}
var values = [0,2,7,1,6];
values.sort(compare);
alert(values); //显示0,1,2,6,7
concat函数,被复制的数组不会发生变化
用来数组数组连接,例如:
var colors = [“red”,“green”,“blue”];
var colors2 = colors,concat(“yellow”,[“black”,brown"]);
alert(colors2); //red,green,blue,yellow,black,brown
slice函数,复制数组的某段连续的元素
例如:
var colors = [“red”,“green”,“blue”,“black”];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,3);
alert(colors2); //green;
alert(colors3); //green,blue
如果是这种情况的话(负数),请加上数组的长度,再弄
例如:
如果数组长度为5
slice(-2,-1);
与slice(3,4)是一样的
splice函数
删除splice(0,5),2个参数
第一个参数是开始,第二个参数是从第一个参数开始,删除多少个
插入splice(2,1,“red”,“blue”,“green”);3个参数
一个参数是开始,第二个参数删除多少个,第三或者四或者5个参数则是在2开始插入元素
替换也是一样?