PDA

Просмотр полной версии : функция, полностью копирующая объект


Chas
23.11.2007, 17:36
меня достала передача объектов в функции по ссылке.
часто приходится писать классы и добавлять в них функции copy() которая тупо создает пустой эуземпляр класса и копирует все величины в него.
хочу написать функцию, которая бы делала копии любого объекта.
код пока получается такой:

class mylib.util.CommonUtils{
...
static function objectCopy (obj){
if (!(obj instanceof Object)) return obj;
var i; var copy={}; copy.__proto__=obj.__proto__;
for (i in obj){
copy[i]=objectCopy (obj[i]);
}
return copy;
}
...
}

для простых объъектов типа pointer={x:10,y:10} работает, но не для сложных. если взять хотя бы массив, и скопировать такой функцией, то trace (testVariable instanceof Array) выведет true, но trace (testVariable) выведет пустоту и trace (testVariable.length) выведет undefined, хотя сами элементы массива [0],[1]... будут скопированы.
как бы сделать так, чтобы копировались приватные переменные, функции?

etc
23.11.2007, 20:12
Геттеры и сеттеры скопировать подобным образом не получится.