我希望能够键入 map.cube 并让它返回 pt3arraylocation 作为默认值,除非我通过键入 map.cube.poly 来指定我想要的
例如:map.cube 将返回 [0,0,0] 并且 map.cube.poly 将返回对象立方体中的对象 poly
你不能在 JavaScript 中做到这一点。
但是,作为替代方案,值得注意的是,您可以根据需要向数组添加任意属性。例如:
var map {
cube: [0,0,0],
other: [1,0,0]
};
map.cube.poly = {}; // {} is the same as `new Object()` but not subject to people...
map.other.poly = {}; // ...overriding the `Object` symbol
然后map.cube
为您提供数组,并map.cube.poly
为您提供存储在该数组中的对象。
这怎么可能?因为在 JavaScript 中,数组并不是真正的数组。它们只是具有自动length
属性的对象,以特殊方式处理一类属性名称(所有数字名称),并Array.prototype
对其进行备份。当然,您可以向任何对象添加属性。
这样做没有文字语法,这就是为什么我必须在上面的对象初始化程序之后使用赋值来完成它。但这是完全有效的。我一直将它用于交叉索引数组。
如果您这样做,请确保您没有for..in
错误地使用;更多。