![]() |
Private в классах
Возникает такая ситуация - создаеться два объекта одного класса, приизменении Private параметров одного объекта изменяються эти же параметры и второго объекта. Почему? И как сделать что бы эти Объекты были полностью независимы?
|
Скажу следующие!
Что значит при изменении private параметров!? У обьектов ты их изменить не можеш так как они тебе не доступны а доступны только внутри класса....
ЕстЁбственно если ты поменяеш эту переменную в нутри класса то у всех обьектов которые наследуються от етого класса ета переменная измениться..... Независимы они и так друг от друга просто переменные которые ты хочеш поменять во время проигрывания флашки должны быть по крайней мере public |
class Object3D{
private var cor3d = new Array(); private var Parts = new Array(); private var consPath = new String(); private var dist; function Object3D( xyz, part, nameClip, path, depth){ for (var i = 0; i < xyz.length; i++){ var temp = { x:xyz[i][0], y:xyz[i][1], z:xyz[i][2] }; this.cor3d[i] = temp; delete temp; } for (var j = 0; j < part.length; j++){ var temp = new Array(); temp["point1"] = part[j][0]; temp["point2"] = part[j][1]; temp["point3"] = part[j][2]; this.Parts[j] = temp; delete temp; } this.dist = 1000; eval(path).createEmptyMovieClip(nameClip, depth); this.consPath = String(eval(path)[nameClip]._target); } Вот такой код и самое интерестное что this.consPath принимает значение которое передаеться в конструктор каждому объекту, а массивы принимают значения которые передаються в конструктор последнему создаваемому объекту! |
Проблема не в свойствах класса.
В конструкторе класса ты передаешь один и то же массив всем экземплярам. Заметь, что все экземпляры Object, в том числе и Array, в любую функцию, в том числе и конструктор класса, передаются по ссылке, а не по значению. В результате каждый экземпляр твоего класса ссылается на один и то же массив. Массивы и др. объекты нужно копировать, если ты хочешь иметь их независимые копии в каждом экземпляре. Код:
some_array=new Array();По значению передаются только Boolean, Number и String, все остальное - по ссылке |
Большое спасибо. А то столько литературы переколбасил, ничего нигде не написанно.
|
| Часовой пояс GMT +4, время: 02:32. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.