Object类型与Array、Date等类型有什么区别?

x_hola
  • 666

Object类型与Array、Date等类型有什么区别?

回复
阅读 3.3k
6 个回答

object用来存放单体事物所需要的数据,举个栗子,有个用户对象UserInfo,可以这么声明

var userInfo = {
    id:  111,
    name: 'Lilei',
    gender: 'male'
};

array用来存储一系列数据,举个栗子,我有一个用户列表userList,可以这么声明

var userList = [
    {
        id: 111,
        name: 'Lilei',
        gender: 'male'
    },
    {
        id: 222,
        name: 'Hanmeimei',
        gender: 'female'
    }
];

date就是日期,专门用来保存日期数据的

其实我不太确定题主你想问什么, 作为对象类型, 这三者没有本质区别.

无非是包含的属性不同而已. 用别的OO语言来说, 对象的数据属性和方法属性不同而已. 而对js而言, 对象无非是键值对, 或属性名和属性值.

比如, 你可以对数组对象执行ary[0]索引操作, 对日期对象执行date.getDate()获取日期操作. 因为js语法的任性, 也可以这样写date['getDate'](). 瞧, 都是取属性. 不同的只是属性以其数量不同.

如果要继承的话, Object会继承最少的属性, 以方便创建通用的对象类型. 而ArrayDate已经包含了部分特殊的非通用属性, 通过继承创建的类型也会包含这些特殊属性.

本质上来讲, 类型由属性及其数量来区分, 所以并没有什么区别.

自行参阅《javascript高级程序设计》第五章
书上就有的,有必要一个接着一个的全部拿来问?

arraykey只能是数字

这种说法有问题,评论中的

for(var key in [1,2,3,4]) {
    console.log( typeof(key) ); //'string'
}

这段代码打印出来是string,我想表达的是array的下标只能是数字,现在看来应该说number like更准确?因为arr['0']这种也是可以的。。。不过arr['one']这种则不会增加arrlength属性,使用普通的for循环也是遍历不到的,我不认为这种可以算作数组元素,只能算是数组属性。

可以这样理解:

Array、Date是Object的子类型,是特殊的Object。它们继承了Object的所有性质,同时又具有自己的特殊性。

所以:
联系就是它们三个是属性的集合。
区别就是Array、Date是对Object进行了特殊的订制,分别适合来存储顺序数据和表示日期、进行日期相关的操作。

题外话:

一开始看到这个问题,我觉得好像应该参考官方文档,但是我仔细思考了一下,还是给问题点了个赞,然后再看评论,发现 @leftstick 回答得还算有点切题。然后,上面的 @Showonne 对于我的评论,不太虚心,然后又不太友好,我在此就做一下详细的回答和说明。不服来辩。


首先,javascript一开始设计并不是完全面向对象的语言,而是基于对象的语言,这个,基于对象,我在此先不多做解释。然后来看问题:Object类型与Array、Date等类型有什么区别?

在javascript里面,Array类型其实是Object类型的子类,Date类型,其实就是Date类,javascript提供的,算是一个内置类,也是属于Object类型,也就是Date是一个Date Object.

javascript里,访问对象其实也是可以用数组形式来访问的,举个例子:

var object1 = { aa : 'This is aa', bb : 'This is bb'};
console.log(object1['aa']); // 输出 'This is aa'
console.log(object1['bb']); // 输出 'This is bb'

然后,javascript的数组的key其实也可以是任意字符,举个例子:

var array1 = new Array();
    array1["first"] = "my";
    array1["second"] = "name";
    array1["third"] = "is";
    array1["fourth"] = "chenssy";
    console.log(array1); // 此处输出可以自己测试

如上面例子以及上面一开始所说的,javascript的Array类型是Object类型的子类,也就是说javascript里的Array是继承于Object对象的。
关于Date,是javascript的内置类,可以使用下例子来查看:

console.log(new Date()); // 

然后,Date具体用法请参考:javascript Date

你知道吗?

宣传栏