Показать сообщение отдельно
Старый 15.11.2004, 17:40
_zhloba вне форума Посмотреть профиль Отправить личное сообщение для _zhloba Посетить домашнюю страницу _zhloba Найти все сообщения от _zhloba
  № 4  
_zhloba

Регистрация: Apr 2004
Адрес: Минск
Сообщений: 176
Проблема не в свойствах класса.

В конструкторе класса ты передаешь один и то же массив всем экземплярам.

Заметь, что все экземпляры Object, в том числе и Array, в любую функцию, в
том числе и конструктор класса, передаются по ссылке, а не по значению.
В результате каждый экземпляр твоего класса ссылается на один и то же массив.

Массивы и др. объекты нужно копировать, если ты хочешь иметь их независимые копии в каждом экземпляре.

Код:
some_array=new Array();
some_object=new Object();

class some_class{
  
  private var _array:Array;
  private var _object:Object;

  function some_class(some_array, some_object){

     var i=0;
     var num=some_array(length);
     _array=new Array();

     for(i=0; i<num; i++){
         _array.push(some_array[i]);
     }
     
     var prop;
     _object=new Object();
     for(prop in some_object){
         _object[prop]=some_object[prop];
     }
  }
}

em1=new some_class(some_array, some_object);
em2=new some_class(some_array, some_object);
Так будет работать - em1 и em2 будут иметь разные значения в своих свойствах.

По значению передаются только Boolean, Number и String, все остальное - по ссылке
__________________
Юра