对象其实就是一种类型,即引用类型。而对象的值就是引用类型的实例。
在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称做为类, 但 ECMAScript中却没有这种东西。 虽然 ECMAScript是一门面向对象的语言, 却不具备传统面向对象语言所支持的类和接口等基本结构
1. Object类型
对于在应用程序中的存储和传输数据而言,Object类型是非常理想的选择
两种创建对象的方式:
1) new关键字创建对象
var user = newObject(); //new关键字可以省略
user.name = '张三'; //创建属性字段
user.age = 20;
2)用字面量方式创建 Object
var user = { //字面量方式
name : '张三', //创建属性字段,多个属性用逗号隔开
age : 20
};
两种属性输出方式:
alert(user.age); //点表示法输出
alert(user['age']); //中括号表示法输出,注意引号
给对象创建方法:
var user = { //字面量方式
name : '张三', //创建属性字段,多个属性用逗号隔开
age : 20,
run: function() { //对象中的方法
return '执行了user的方法';
}
};
alert(user.run());
删除对象属性:
delete user.age;
2. Array类型
除了 Object类型之外, Array类型是 ECMAScript最常用的类型。
ECMAScript中的 Array类型和其他语言中的数组有着很大的区别。虽然数组都是有序排列,但 ECMAScript中的数组每个元素可以保存任何类型。 ECMAScript中数组的大小也是可以调整的
类似于对象,数组也有两种创建方式:
1) new关键字创建数组(new关键字可以省略)
var array= newArray(); //创建了一个数组
var array= newArray(10); //创建一个包含 10个元素的数组
var array= newArray('张三',20,'学生'); //创建一个数组并分配好了元素
2)用字面量方式创建数组
var array= []; //创建一个空的数组
var array= ['张三',20,'学生']; //创建包含元素的数组
可以通过array.length获取到数组的长度,但是要注意的是对于[‘张三’,20,’学生’,]的一个数组,IE浏览器会认为它有四个元素,所以要注意逗号的个数
3. 数组中的方法
栈方法:
push()方法可以接收任意数量的参数, 把它们逐个添加到数组的末尾, 并返回修改后数组的长度。
而pop()方法则从数组末尾移除最后一个元素,减少数组的length值,然后返回移除的元素
队列方法:
通过push()向数组末端添加一个元素,然后通过shift()方法从数组前端移除一个元素。
ECMAScript还为数组提供了一个 unshift()方法,它和 shift()方法的功能完全相反。unshift()方法为数组的前端添加一个元素
重排序方法:
数组中已经存在两个可以直接用来排序的方法: reverse() 用于逆向排序,sort() 从小到大排序
可以通过给 sort()方法传递一个函数参数,自定义排序方法
function compare(value1,value2) { //数字排序的函数参数
if (value1< value2) { //小于,返回负数
return-1;
} else if (value1> value2) { //大于,返回正数
return1;
}else{ //其他,返回0
return0;
}
//var array=[0,1,5,10,15];
//array.sort(compare)); //传参
操作方法:
ECMAScript为操作已经包含在数组中的元素提供了很多方法。
concat()方法可以基于当前数组创建一个新数组。
var array=['张三',20,'学生']; //当前数组
var array2=array.concat('计算机编程'); //创建新数组,并添加新元素
alert(array2); //输出新数组
alert(array); //原来的数组数组不变
slice()方法可以基于当前数组获取指定区域元素并创建一个新数组。
var array=['张三',20,'学生']; //当前数组
var array2=array.slice(1); //相当于array.slice(1,3),包括头不包括尾的区间
alert(array2); //20,学生
alert(array); //原来的数组数组不变
splice()主要用途是向数组的中部插入元素。
splice中的删除功能:
var array=['张三',20,'学生']; //当前数组
var array2=array.splice(0,2); //注意这里表示 从第0个位置 取两个 ,不是表示区间
alert(array2); //返回截取的元素
alert(array); //原来数组要删除被截取的元素
splice中的插入功能:
var array=['张三',20,'学生']; //当前数组
var array2=array.splice(1,0,'计算机','山东'); //注意这里表示 从第1个位置 取0个 并添加两条
alert(array2); //取0条,所以这个地方输出为空
alert(array); //这里输出插入之后的
splice中的替换功能:
var array=['张三',20,'学生']; //当前数组
var array2=array.splice(1,1,100); //截取了第2条,替换成100
alert(array2); //输出截取的20
alert(array); //输出替换之后的