数组的 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
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