Object类型与Array、Date等类型有什么区别?
其实我不太确定题主你想问什么, 作为对象类型, 这三者没有本质区别.
无非是包含的属性不同而已. 用别的OO
语言来说, 对象的数据属性和方法属性不同而已. 而对js
而言, 对象无非是键值对, 或属性名和属性值.
比如, 你可以对数组对象执行ary[0]
索引操作, 对日期对象执行date.getDate()
获取日期操作. 因为js
语法的任性, 也可以这样写date['getDate']()
. 瞧, 都是取属性. 不同的只是属性以其数量不同.
如果要继承的话, Object
会继承最少的属性, 以方便创建通用的对象类型. 而Array
和Date
已经包含了部分特殊的非通用属性, 通过继承创建的类型也会包含这些特殊属性.
本质上来讲, 类型由属性及其数量来区分, 所以并没有什么区别.
array
的key
只能是数字
这种说法有问题,评论中的
for(var key in [1,2,3,4]) {
console.log( typeof(key) ); //'string'
}
这段代码打印出来是string
,我想表达的是array
的下标只能是数字,现在看来应该说number like
更准确?因为arr['0']
这种也是可以的。。。不过arr['one']这种则不会增加arr
的length
属性,使用普通的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
6 回答5.5k 阅读✓ 已解决
9 回答9.6k 阅读
5 回答3.8k 阅读✓ 已解决
4 回答8.2k 阅读✓ 已解决
7 回答10.2k 阅读
5 回答8.5k 阅读
2 回答10.6k 阅读✓ 已解决
object
用来存放单体事物所需要的数据,举个栗子,有个用户对象UserInfo
,可以这么声明array
用来存储一系列数据,举个栗子,我有一个用户列表userList
,可以这么声明date
就是日期,专门用来保存日期数据的