Цитата:
|
Появилась необходимость в сравнении 2 объектов на полную идентичность
|
1 это не объект. Это же простой тип, он передается по значению, а не по ссылке.
Другими словами, Вы хотите сравнивать переменные, то есть ссылки. Но Ваша функция не получает ссылок. Она получает просто значения — единички. И эти значения никак не могут быть неравны.
Добавлено через 12 минут
Не говоря уже о том, что prop в obj3 вовсе не собирается хранить ссылку на obj1 и его prop, а просто сохраняет
значение:

Код AS3:
var obj1:Object = { prop: 1 };
var obj2:Object = { prop: 1 };
var obj3:Object = { prop: obj1.prop };
obj1.prop = 5;
trace(obj3.prop); // output: 1
Добавлено через 17 минут
Решение для первого случая — передавать ссылки на объекты и строковые имена ключей. В функции сравнивать И объекты, и значения ключей

Код AS3:
function checkObjectsIdentity(object1:*, propName1:String, object2:*, propName2:String):Boolean
{
// Тут происходит магия
return object1 === object2 && object1[propName1] === object2[propName2];
}
Но для второго случая true не будет из-за неравенства объектов.
Добавлено через 23 минуты
Да и в первом случае все не так гладко)) Мы получим true при таком раскладе:

Код AS3:
var obj1:Object = { prop: 1, prop2: 1 };
// Тут функция должна возвращать false
checkObjectsIdentity(obj1, "prop", obj1, "prop2");