Javascript 如何克服名为“;长度”;jQuery

Javascript 如何克服名为“;长度”;jQuery,javascript,jquery,arrays,magento2,Javascript,Jquery,Arrays,Magento2,我不知道这是否是一个常见问题,但使用Magento 2,当属性名为length时,会出现以下错误: RangeError:数组长度无效 这里的item.attribute\u code是动态的,来自Magento属性。因此,当我将属性创建为length时,我的代码是: self.attributeNames[length] = Length; 这让我在使用它时产生了上述错误 如何克服这个问题?在第三行中,您应该分配一个空对象(不是空数组),即self.attributeNames={}。使用数

我不知道这是否是一个常见问题,但使用Magento 2,当属性名为
length
时,会出现以下错误:

RangeError:数组长度无效

这里的
item.attribute\u code
是动态的,来自Magento属性。因此,当我将属性创建为
length
时,我的代码是:

self.attributeNames[length] = Length;
这让我在使用它时产生了上述错误


如何克服这个问题?

在第三行中,您应该分配一个空对象(不是空数组),即
self.attributeNames={}
。使用数组,您可以使用
push
方法添加新项,并仅将值分配给现有项(按数字索引)。对于对象,您可以像第四行一样在运行时添加任何特定字段。

在第三行中,您应该分配一个空对象(而不是空数组),即
self.attributeNames={}
。使用数组,您可以使用
push
方法添加新项,并仅将值分配给现有项(按数字索引)。对于对象,您可以像在第四行中一样在运行时添加任何特定字段。

在最后的代码片段中,“length”一词拼写错误,也没有被引用。显然变量
length
不是正数>=0。但是您没有显示它的来源,因此您希望得到什么帮助..在最后的代码片段中,“length”一词拼写错误,也没有被引用。显然变量
length
不是正数>=0。这是因为在Javascript数组中是标准数组(仅数字),如果要将Javascript对象用作键值映射,则需要一个对象。请注意,这在PHP中是不同的,我想这就是OP Confision的来源。如果有一个合理的解释,我会对这个答案投赞成票。@Walfrat的评论现在做了一些解释,但是一个好的答案应该不止是一行“这样做”。@PeterB现在更好了?谢谢,尽管我希望能有更多的解释,这解释了为什么
length
是javascript中数组对象的一个特殊属性。对于这个问题,通过使用
{}
而不是
[]
length
属性可以再次自由使用。@PeterB如果您对答案应该是什么有很好的想法,请提交您的答案,这是因为Javascript数组中是标准数组(只有数字),如果要将Javascript对象用作键值映射,则需要一个对象。请注意,这在PHP中是不同的,我想这就是OP Confision的来源。如果有一个合理的解释,我会对这个答案投赞成票。@Walfrat的评论现在做了一些解释,但是一个好的答案应该不止是一行“这样做”。@PeterB现在更好了?谢谢,尽管我希望能有更多的解释,这解释了为什么
length
是javascript中数组对象的一个特殊属性。对于这个问题,通过使用
{}
而不是
[]
,可以再次自由使用
length
属性。@PeterB如果您对答案有很大的了解,请提交您的答案
self.attributeNames[length] = Length;