即,以下代码如何:
var sup = new Array(5); sup[0] = 'z3ero'; sup[1] = 'o3ne'; sup[4] = 'f3our'; document.write(sup.length + "
");
输出'5'作为长度,当你所做的就是设置各种元素?
我对此代码的"问题"是,我不理解如何在length
不调用getLength()
或setLength()
方法的情况下进行更改.当我执行以下任何操作时:
a.length a['length'] a.length = 4 a['length'] = 5
在非数组对象上,它的行为类似于dict/associative数组.当我在数组对象上执行此操作时,它具有特殊含义.JavaScript中的哪种机制允许这种情况发生?javascript是否有某种类型的属性系统进行翻译
a.length a['length']
进入"获取"方法和
a.length = 4 a['length'] = 5
进入"设置"方法?
JavaScript中的所有内容都是一个对象.在a的情况下Array
,该length
属性返回数组的索引项的内部存储区域的大小.一些混淆可能会起作用,因为[]
运算符适用于数字和字符串参数.对于数组,如果将其与数字索引一起使用,则返回/设置预期的索引项.如果将它与字符串一起使用,它将返回/设置数组对象上的命名属性 - 除非字符串对应于数值,否则它将返回索引项.这是因为在JavaScript中,数组索引通过隐式toString()
调用强制转换为字符串.坦率地说,这只是让你头脑发热并且说"JavaScript,这就是为什么他们会嘲笑你"的那些东西.
浏览器之间的实际底层表示可能不同(或者可能不同).除了使用它时提供的接口之外,我不会依赖任何其他东西.
您可以在MDN上找到有关Javascript数组的更多信息.