Показать сообщение отдельно
Старый 13.08.2012, 01:35
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 1  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
По умолчанию Очень «строгая» проверка объектов

Всем привет)

Появилась необходимость в сравнении 2 объектов на полную идентичность, т.е. на то, что они ссылаются на один и тот же фрагмент в памяти. Не знаю, возможно ли такое в AS3, но постараюсь объяснить, как это должно работать:

Код AS3:
// Задаём начальные данные
var obj1:Object = { prop: 1 };
var obj2:Object = { prop: 1 };
var obj3:Object = { prop: obj1.prop };
 
// Тут функция должна возвращать false
checkObjectsIdentity(obj1.prop, obj2.prop)
// Тут функция должна возвращать true
checkObjectsIdentity(obj1.prop, obj3.prop)
 
/**
 * Функция, которая должна проверять объекты на идентичность
 * (ссылание на 1 объект в памяти).
 * 
 * @param	object1
 * @param	object2
 * 
 * @return
 */
function checkObjectsIdentity(object1:*, object2:*):Boolean
{
	// Тут происходит магия
}
Как мне подсказывает интуиция, из-за того, что в AS3 при работе с простыми объектами (Boolean, Sting, Number и т.п.) происходит копирование объекта данных, а не ссылка на его изначальный объект, подобная проверка вообще будет невозможна, так как мы всегда будем ссылаться на разные участки памяти (так как при присваивании объекту свойства другого объекта с простым типом данных происходит его копирование).

Но всё-таки, возможно, кто-то сталкивался с подобной задачей и сможет подсказать решение.

За ранее спасибо)