Две двоеточия перед методом toString () массива - PullRequest
1 голос
/ 22 марта 2019

Что означают две двоеточия перед вызовом метода toString()?

Например, я нашел следующий код:

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

Это то же самое, что и ['status'].toString().call(orderXml.ns);?

Я использую скрипт Demandware выше.

Спасибо.

1 Ответ

3 голосов
/ 10 апреля 2019

В 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.На самом деле это не нотация Array, как при краткой проверке.В частности, он ищет свойство пространства имен.Это не то же самое, что вызов:

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

Метод .toString() используется, чтобы гарантировать, что мы получим представление String свойства, а не ссылку на экземпляр этого узла XML.

Обратите внимание, что Demandware использует модифицированную версию JavaScript-реализации Mozilla Rhino 1.7R5.Смотрите матрицу функций здесь: https://mozilla.github.io/rhino/compat/engines.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...