Знак at перед квадратными скобками

В настоящее время я поддерживаю некоторый код DS/JS в Demandware, и я только что обнаружил, что:

var XmlReponse : XML = new XML(result.object.text);
status = XmlReponse.@["STATUS"];

Что делает этот необычный синтаксис "@[...]"?

Возможно, это как-то связано со спецификацией ECMA-357 (также известной как «E4X»), но я не уверен: в файле DW docs (требуются учетные данные), сказано:

"Вы можете считывать значения из объекта XML так же, как и из стандартных объектов ECMAScript"

var quantity = order.item(0).@quantity;
var singleItem = order.item.(@quantity == 1);

Кажется, это объясняет @, но позвольте мне скептически отнестись к следующим квадратным скобкам, может быть, это какое-то динамическое свойство?

Спасибо :)


person Benj    schedule 11.08.2017    source источник
comment
Это действительно простой JavaScript? Как называется файл, в котором вы это нашли? В частности, каков его суффикс/расширение? Это .js? Мне интересно, потому что в JavaScript тоже нет аннотаций типов, которые находятся в строке перед той, о которой вы интересуетесь.   -  person Some programmer dude    schedule 11.08.2017
comment
Не совсем чистый JS, это скрипт Demandware, но он предназначен для ES5. Я обновлю.   -  person Benj    schedule 11.08.2017
comment
@Benj это точно не ES5.   -  person Bergi    schedule 11.08.2017
comment
И вы не используете средства проверки типов, такие как Flow (которые могут добавлять дополнительный синтаксис)?   -  person Some programmer dude    schedule 11.08.2017
comment
В вики тега Demandware говорится, что Demandware... использует стиль JavaScript- язык сценариев... (выделено мной). Может быть, это не настоящий JavaScript, а его собственный диалект, добавляющий дополнительный синтаксис?   -  person Some programmer dude    schedule 11.08.2017
comment
Я не знаю, используем ли мы Flow или что-то еще, с Demandware правда не там   -  person Benj    schedule 11.08.2017
comment
@Someprogrammerdude Да, кажется, это какой-то пользовательский материал, но я не могу помочь, чтобы найти его в их документах ... Как бы то ни было, спасибо за совет, теперь я знаю, что это не JS и может быть обработано каким-то внешним инструмент / библиотека.   -  person Benj    schedule 11.08.2017


Ответы (1)


Из чтения ex4 manual кажется, что он прочитал свойство элемента xml. Я не вижу, чтобы чтение индексатора отличалось

Затем ваш упомянутый код будет читать атрибут STATUS в xmlresponse.

Код в связанном ручном статусе ex4:

E4X позволяет получить доступ к атрибутам определенного элемента с помощью оператора .@. Самый простой случай будет выглядеть примерно так.

var element = <foo bar="1"/>
element.@bar = 2;
person Icepickle    schedule 11.08.2017
comment
И я полагаю, что [...] предназначен только для доступа к атрибуту? Будет <item STATUS="..." ... /> ? Зачем эти квадратные скобки? - person Benj; 11.08.2017
comment
@Benj Я думаю, это не имеет большого значения, знак @ уже указывает на атрибут, я думаю, вы могли бы просто написать @status, в документах ничего не нашел. Интересно, что он написан только прописными буквами, хотя спецификация xml обычно говорит, что все атрибуты должны быть строчными. - person Icepickle; 11.08.2017
comment
Да, это очень странно. Спасибо за ответ и хорошего дня :) - person Benj; 11.08.2017