Руководство по actionscript. часть 3, стр. 074
Равенство объектов XMLList
Чтобы определить, являются ли два экземпляра класса XMLList равными, среда выполнения Flash сравнивает по порядку все экземпляры в этих объектах, используя правила определения равенства объектов XML, которые были рассмотрены в предыдущем разделе. Если хотя бы один элемент из первого экземпляра класса XMLList не равен соответствующему элементу из второго экземпляра, два экземпляра класса XMLList считаются неравными. Например, в следующем коде объект XMLList, возвращаемый выражением msgl. *, считается равным объекту XMLList, возвращаемому выражением msg2 . *, поскольку каждый экземпляр класса XML из результата выражения msgl. * считается равным экземпляру класса XML в соответствующей позиции из результата выражения msg2 . *:
var msgl:XML = World J. Programmer Hello :
var msg2:XML = World J. Programmer Hello ;
trace(msgl.* == msg2.*): // Выводит: true
Экземпляр класса XML и объект XMLList, содержащий один-единственный экземпляр класса XML, сравниваются точно так же, как два экземпляра класса XML:
traceCmsgl. FROM == msg2.*[l]); // Выводит: true
Это значит, что оператор равенства (==) считает объект XMLList с одним-един-ственным экземпляром класса XML равным этому экземпляру!
traceCmsgl. FROM == msgl. FROM[0]): // Выводит: true
Чтобы отличить объект XMLList, содержащий один-единственный экземпляр класса XML, от этого экземпляра, используйте оператор строгого равенства (===):
traceCmsgl. FROM === msgl. FROM[0]): // Выводит: false
Равенство объектов QName
Класс QName представляет имя элемента или атрибута, уточняемое пространством имен. Два экземпляра класса QName считаются равными, если их названия пространств имен и локальные имена совпадают (то есть они имеют одинаковые значения переменных uri и localName). Например, следующий код создает объект QName с помощью конструктора класса QName и сравнивает этот объект с объектом QName, полученным из XML-документа. Оба объекта QName имеют одинаковые названия пространств имен и локальные имена, поэтому считаются равными.
var product:XML = xmlns:someCorp=»http://www. example. com/someCorp»>
99.99 :
var someCorp:Namespace = product. namespace(«someCorp»);
var qnl:QName = new QNameC’http://www. example. com/someCorp», «PRICE»):
var qn2:QName = product. someCorp:.PRICE. name( ):
trace(qnl == qn2): // Выводит: true
Равенство объектов Namespace
Класс Namespace представляет уточняющую часть имени, которое уточняется с помощью пространства имен. Два объекта Namespace считаются равными тогда, и только тогда, когда они содержат одно и то же название пространства имен (то есть когда их переменные uri хранят одно и то же значение), независимо от префикса. Например, следующий код создает объект Namespace с помощью конструктора класса Namespace и сравнивает созданный объект с объектом Namespace, полученным из XML-документа. Оба объекта Namespace содержат один и тот же идентификатор URI, поэтому считаются равными, несмотря на то, что префиксы отличаются.