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

时间:2019-03-22 16:21:57

标签: function multiple-columns bind demandware salesforce-commerce-cloud

调用#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脚本。

谢谢。

1 个答案:

答案 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