数组的 toString() 方法前的两个冒号

Two colons before the array`s toString() method

toString() 方法调用前的两个冒号是什么意思?

例如,我找到了以下代码:

orderXml.ns::['status'].toString();

['status'].toString().call(orderXml.ns);一样吗?

我正在使用上面的 Demandware 脚本。

谢谢。

在 Demandware Script 中,您会发现一个长期弃用的概念,称为 E4X,它扩展了 JavaScript 1.6/ES3 语法仍然存在。但是,现在不鼓励使用它。您可以在此处找到有关此语法的一些文档:https://developer.mozilla.org/en-US/docs/Archive/Web/E4X/Processing_XML_with_E4X

在您提供的脚本片段中,冒号用于标识以下表达式的 XML 命名空间。如果没有该命名空间,您可能会发现引用了不正确的对象,或者您可能会得到未定义的引用。请参阅上面链接的与命名空间相关的文档存档的特定区域:https://developer.mozilla.org/en-US/docs/Archive/Web/E4X/Processing_XML_with_E4X#Handling_namespaces

代码本质上是查找名称为 status 的对象 属性。这实际上并不是粗略检查时出现的数组表示法。具体来说,它会查找命名空间 属性。它与调用不同:

['status'].toString().call(orderXml.ns);

.toString() 方法用于确保我们获得 属性 的 String 表示,而不是对 XML 节点实例的引用。

请注意,Demandware 使用 Mozilla Rhino 1.7R5 JavaScript 实施的修改版本。请在此处查看特征矩阵:https://mozilla.github.io/rhino/compat/engines.html