Я не совсем уверен, что вы хотите сделать здесь.
Параметры действительно передаются по значению. В случае объектов (и под объектом здесь я подразумеваю все, что имеет ссылочную семантику, т.е. все, кроме логических значений, чисел, целых, строк и т. Д.), Ссылка на них передается по значению, поэтому в вашей функции у вас есть ссылка на исходный объект, а не ссылка на копию объекта.
Итак, если вы хотите разыменовать объект и изменить какое-либо значение или вызвать какой-либо метод для него, все будет в порядке. Единственное, что не работает - это изменение самой ссылки; то есть вы не можете обнулить его или назначить ему новый объект:
function dereferenceParam(param:Object):void {
param.someInt = 4;
param.someMethod();
}
function reassignParam(param:Object):void {
param = null;
// or
param = new Object();
}
dereferenceParam () будет работать так, как ожидает большинство людей, reassignParam - нет.
Теперь единственная возможная "проблема", которую, я думаю, у вас может возникнуть в соответствии с вашим последним абзацем, это то, что вы хотите удалить или обнулить поисковый объект из некоторого массива, который у вас есть. Я боюсь, что в этом случае единственным способом было бы перебрать массив.