Две двоеточия перед методом toString() массива
Что делает две колоны перед toString()
метод вызова означает?
Например, я нашел следующий код:
orderXml.ns::['status'].toString();
Это так же, как ['status'].toString().call(orderXml.ns);
?
Я использую скрипт Demandware выше.
Спасибо.
1 ответ
В 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
Код по существу ищет свойство объекта с именем: status
, На самом деле это не нотация Array, как при краткой проверке. В частности, он ищет свойство пространства имен. Это не то же самое, что звонить:
['status'].toString().call(orderXml.ns);
.toString()
Метод используется, чтобы убедиться, что мы получаем String
представление свойства, а не ссылка на экземпляр этого узла XML.
Обратите внимание, что Demandware использует модифицированную версию JavaScript-реализации Mozilla Rhino 1.7R5. Смотрите таблицу функций здесь: https://mozilla.github.io/rhino/compat/engines.html