调用#wso
之前的两个冒号是什么意思?
例如,我找到了以下代码:
compile group: 'org.apache.beam', name: 'beam-vendor-guava-20_0', version: '0.1'
compile group: 'org.apache.beam', name: 'beam-vendor-grpc-1_13_1', version: '0.2'
与toString()
一样吗?
我正在使用上面的Demandware脚本。
谢谢。
答案 0 :(得分:0)
在Demandware脚本中,您会发现一个长期不推荐使用的概念,即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