扫码关注官方订阅号
Object类型与Array、Date等类型有什么区别?
走同样的路,发现不同的人生
object用来存放单体事物所需要的数据,举个栗子,有个用户对象UserInfo,可以这么声明
object
UserInfo
var userInfo = { id: 111, name: 'Lilei', gender: 'male' };
array用来存储一系列数据,举个栗子,我有一个用户列表userList,可以这么声明
array
userList
var userList = [ { id: 111, name: 'Lilei', gender: 'male' }, { id: 222, name: 'Hanmeimei', gender: 'female' } ];
date就是日期,专门用来保存日期数据的
date
其实我不太确定题主你想问什么, 作为对象类型, 这三者没有本质区别.
无非是包含的属性不同而已. 用别的OO语言来说, 对象的数据属性和方法属性不同而已. 而对js而言, 对象无非是键值对, 或属性名和属性值.
OO
js
比如, 你可以对数组对象执行ary[0]索引操作, 对日期对象执行date.getDate()获取日期操作. 因为js语法的任性, 也可以这样写date['getDate'](). 瞧, 都是取属性. 不同的只是属性以其数量不同.
ary[0]
date.getDate()
date['getDate']()
如果要继承的话, Object会继承最少的属性, 以方便创建通用的对象类型. 而Array和Date已经包含了部分特殊的非通用属性, 通过继承创建的类型也会包含这些特殊属性.
Object
Array
Date
本质上来讲, 类型由属性及其数量来区分, 所以并没有什么区别.
自行参阅《javascript高级程序设计》第五章书上就有的,有必要一个接着一个的全部拿来问?
array的key只能是数字
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循环也是遍历不到的,我不认为这种可以算作数组元素,只能算是数组属性。
string
number like
arr['0']
arr
length
可以这样理解:
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
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
object用来存放单体事物所需要的数据,举个栗子,有个用户对象UserInfo,可以这么声明array用来存储一系列数据,举个栗子,我有一个用户列表userList,可以这么声明date就是日期,专门用来保存日期数据的其实我不太确定题主你想问什么, 作为对象类型, 这三者没有本质区别.
无非是包含的属性不同而已. 用别的
OO语言来说, 对象的数据属性和方法属性不同而已. 而对js而言, 对象无非是键值对, 或属性名和属性值.比如, 你可以对数组对象执行
ary[0]索引操作, 对日期对象执行date.getDate()获取日期操作. 因为js语法的任性, 也可以这样写date['getDate'](). 瞧, 都是取属性. 不同的只是属性以其数量不同.如果要继承的话,
Object会继承最少的属性, 以方便创建通用的对象类型. 而Array和Date已经包含了部分特殊的非通用属性, 通过继承创建的类型也会包含这些特殊属性.本质上来讲, 类型由属性及其数量来区分, 所以并没有什么区别.
自行参阅《javascript高级程序设计》第五章
书上就有的,有必要一个接着一个的全部拿来问?
array的key只能是数字这种说法有问题,评论中的
这段代码打印出来是
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里,访问对象其实也是可以用数组形式来访问的,举个例子:
然后,javascript的数组的key其实也可以是任意字符,举个例子:
如上面例子以及上面一开始所说的,javascript的Array类型是Object类型的子类,也就是说javascript里的Array是继承于Object对象的。
关于Date,是javascript的内置类,可以使用下例子来查看:
然后,Date具体用法请参考:javascript Date