JS Object Type
JS中的对象(Object)是比较复杂的. 在ECMA中的定义还是比较清晰的;
这里翻译一下, 分享给大家.
因为本节内容有许多的表格, 我有翻译, 但也给了大家链接, 原版的可以自己查阅.
原文地址: ECMAScript Object Type
The Object Type
对象(Object) 是属性的逻辑上的集合(collection).
每个一个属性(property) 不是 数据属性(data property)
就是 访问器属性 (accessor property)
数据属性的key值与ECMAScript语言的值和一系列布尔类型(Boolean)的特征(attributes)相关联. (后面有解释)
访问器属性的key值与一个或两个访问器函数以及一系列布尔类型(Boolean)的特征(attributes)相关联.
访问器函数被用于存储和查询相关联的属性的ECMAScript语言值.
属性(Properties) 通过 key 识别.
一个属性的key 有两种类型
- String (包括空字符串)
- Symbol
属性名是一个属性键,它是一个字符串值。
ECMAScript语言值 就是 JS 中的数据值, 例如 null, undefined , object 等等
一个整型的索引(index)是一个 String-valued 的属性key, 它是规范的数字字符串, 并且它的数字值范围是 +0(正数0) 和 2^53 -1 之间.
一个数组的索引是一个整数索引, 它的范围是在 +0 到 2^32 -1 之间.
如果, 使用数字作为key, 会默认转成字符串. 但是, 在数据超过 2^53 -1 时, 会使用科学计数法.
var q = {
8390812903912839012903891839018390129381938912083918390131830912839: 'hello'
}
// undefined
q