首页 > javascript学习 > JavaScript > javascript中的对象和数组
2016
12-16

javascript中的对象和数组

什么是一种类型,就是一种引用类型。而对象的值就是引用类型的实例。在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称做为类,但ECMAScript中却没有这种东西。虽然ECMAScript是一门面向对象的语言,却不具备传统面向对象语言所支持的类和接口等基本结构。

一.Object类型

我们使用的引用类型最多的可能就是Object类型了。虽然Object的实例不具备多少功能,但对于在应用程序中的存储和传输数据而言,它确实是非常理想的选择。创建Object类型有两种。一种是使用new运算符,一种是字面量表示法。

1.使用new运算符创建Object

var box = new Object();//new关键字可以省略

box.name = 'MyName';//创建属性字段

2.使用字面量方式创建Object

var box = {name : 'MyName',age : 28};

如果属性名和值相同,可以使用简写obj = { x, y }等价于obj = { x:x, y:y }

3.使用字面量及传统赋值方式

var box = {};//字面量方式声明空的对象

box.name = 'MyName';

4.获取属性的方法

alert(box.age); //点表示法输出

alert(box['age']);//中括号表示法输出,字段名必须用引号包含

在使用字面量声明Object对象时,不会调用Object()构造函数(Firefox除外)。

5.给对象创建方法

var box = {

run : function () {return '运行';}

}

box.run(); //调用对象中的方法

6.使用delete删除对象属性

delete box.name;//删除属性

在实际开发过程中,一般我们更加喜欢字面量的声明方式。因为它清晰,语法代码少。字面量也是向函数传递大量可选参数的首选方式。

7.Object对象通用设置属性方法

Object.defineProperty(obj,prop,descriptor):设置(地添加或修改)指定的obj对象的prop属性的属性描述符descriptor
    返回被传递给函数的对象,直接修改obj对象
    属性描述符descriptor是一个object对象,通过该对象的属性可以精确地添加或修改对象的属性
        configurable:默认false,当为true时该属性描述符才能够被改变
        enumerable:默认false,当为true时该属性才会出现在对象的枚举属性中
        value:该属性对应的值,默认undefined
        writable:默认false,当为true时属性的值(value)才能被赋值运算符改变
        get:属性的getter函数,当访问该属性时,会调用此函数,如果属性没有getter,则为undefined
        set:属性的setter函数,当属性值被修改时,会调用此函数,如果属性没有setter,则为undefined
        如果一个描述符同时拥有value或writable和get或set键,则会产生一个异常

二.Array类型

ECMAScript中的Array类型和其他语言中的数组有着很大的区别。虽然数组都是有序排列,但ECMAScript中的数组每个元素可以保存任何类型。ECMAScript中数组的大小也是可以调整的。创建Array类型有两种方式:第一种是new运算符,第二种是字面量。

1.使用new关键字创建数组(new关键字可以省略)

var box = new Array();//创建了一个数组

var box = new Array(10);//创建一个包含10个元素的数组

var box = new Array('MyName',20,'zhiye','home');//创建一个数组并分配好元素

2.使用字面量方式创建数组

var box = ['MyName',20,'zhiye','home'];

var box = [1,2,];//禁止这么做,IE会识别3个元素

var box = [,,,,,];//同样,IE的会有识别问题

和Object一样,字面量的写法不会调用Array()构造函数。(Firefox除外)。

3.使用索引下标来读取数组的值

alert(box[2]);//获取第三个元素

box[2] = '学生';//修改第三个元素

box[4] = '计算机编程';//增加第五个元素

4.使用length属性获取数组元素量

alert(box.length)//获取元素个数

box.length = 10;//强制元素个数

box[box.length] = 'JS学习';//通过length给数组增加一个元素

数组最多可包含4294967295个元素,超出即会发生异常。

5.获取数组的指定片段

arrayObject.slice(start,end)

返回值:返回一个新的数组,包含从start到end(不包括该元素)的数组片段。
start必需。规定从何处开始选取。如果是负数从数组尾部开始算。
end可选。规定从何处结束选取。如果没有指定那么切分到结束。如果是负数,那么是从数组尾部开始算起的元素。

6.合并数组

arrayObject.concat(arrayX,arrayX,...)

返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

7.展开运算符(...)

使用展开运算符可以替换某些数组函数,顾名思义,展开运算符可以把一个数组展开进行操作

//向数组中添加数据
let add = [4, 5, 6];
let now=[1,2,...add,3]
//赋值
let { a, b, ...z } = { a: 1, b: 2, c: 3, d: 4 };
console.log(z)// { c: 3, d: 4 }

8.逆向数组

arrayObject.reverse(),可以逆向排序数组元素

该方法会改变原来的数组,而不会创建新的数组。

9.向数组删除/添加元素

arrayObject.splice(index,howmany[,item1,.....,itemX]):该方法会改变原始数组

从指定的索引位置index删除howmany个元素,并且在此位置添加后面的参数到数组
使用arrayObject.indexOF(val)可以查找到元素所在的索引,然后删除指定的元素
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。