【发布时间】:2010-09-26 19:54:40
【问题描述】:
即下面的代码怎么写:
var sup = new Array(5);
sup[0] = 'z3ero';
sup[1] = 'o3ne';
sup[4] = 'f3our';
document.write(sup.length + "<br />");
当你所做的只是设置各种元素时,输出'5'作为长度?
我对这段代码的“问题”是,如果不调用 getLength() 或 setLength() 方法,我无法理解 length 的变化。当我执行以下任一操作时:
a.length
a['length']
a.length = 4
a['length'] = 5
在非数组对象上,它的行为类似于 dict / 关联数组。当我对数组对象执行此操作时,它具有特殊含义。 JavaScript 中的什么机制允许这种情况发生? JavaScript 是否有某种类型的属性系统可以翻译
a.length
a['length']
进入“get”方法和
a.length = 4
a['length'] = 5
进入“设置”方法?
【问题讨论】:
-
@some:我是 javascript 新手。我可以在 python 中实现这种行为,我知道如何重载 getitem 等,但我不知道 javascript 的内部结构是如何工作的。您似乎很熟悉,如果您认为这是微不足道的 - 请回复!
-
我很难理解你的问题。你到底想做什么? Javascript 中缺少什么?
-
@Eran:在许多语言中,您可以创建可以使用类似数组的语法 foo[x] 的对象,而实际上不是数组(即在后台发生自己的逻辑)
-
@Gareth:显然,但在 javascript 中,基本的关联字典是一个对象。除了作为哈希数组,它还可以有方法和属性
-
让我试着重新表述这个问题。
标签: javascript arrays associative-array