Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменение объекта за счет изменения другого объекта, как предотвратить?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Иван14
Отправлено: 02 Августа, 2012 - 03:10:08
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Авг. 2011  
Откуда: Владивосток


Помог: 0 раз(а)




Всем привет. сижу и мучаюсь над проблемой и не знаю как сделать, дано:

CODE (javascript):
скопировать код в буфер обмена
  1. var default_properties = {};
  2. var properties = {};
  3.  
  4. function blabla(){
  5.      default_properties = {'color':[{'id':2,'title':'green'}], 'type':'solid', 'status':1};
  6. }
  7.  
  8. function Assign_properties(){
  9.      properties['new']  = default_properties;
  10. }
  11.  
  12. function ChangeNewProperties(){
  13.      properties['new'].color = [];
  14. }
  15. blabla();
  16. Assign_properties();
  17. ChangeNewProperties();


в результате после срабатывания функции "ChangeNewProperties()" свойство объекта default_properties "color" сбрасывается.. и так с любым свойством.. грубо говоря когда я изменяю что-то у объекта properties['new'], то автоматически происходит изменение у объекта default_properties , почему? подскажите что не так делаю...

(Отредактировано автором: 02 Августа, 2012 - 03:10:53)

 
 Top
LIME
Отправлено: 02 Августа, 2012 - 03:23:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. function Assign_properties(){
  2.      properties.new  = default_properties;
  3. }
везде
иначе вы просто создаете массив
причем вы присваиваете не значение а ссылку на объект
в пхп также устроено
http://javascript[dot]ru/forum/misc/[dot][dot][dot]rovat-obekt[dot]html
(Добавление)
к тому же я неуверен что в качестве имени поля можно использовать служебное слово new
а проверить лень))
(Добавление)
скорее можно
 
 Top
Иван14
Отправлено: 02 Августа, 2012 - 04:45:40
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Авг. 2011  
Откуда: Владивосток


Помог: 0 раз(а)




LIME пишет:
везде
иначе вы просто создаете массив
причем вы присваиваете не значение а ссылку на объект
в пхп также устроено


мне нужно чтобы там была переменная а не константа, я имею ввиду момент вот тут:

CODE (javascript):
скопировать код в буфер обмена
  1. properties[new]  = default_properties;


как добиться того же, но только чтобы я мог свойство задать через переменную new ??
 
 Top
tuareg
Отправлено: 02 Августа, 2012 - 08:08:02
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Иван14 Вам выше дали ссылку. Почитайте, там все хорошо расписано.
 
 Top
LIME
Отправлено: 02 Августа, 2012 - 21:31:33
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




tuareg он об этом примерно
PHP:
скопировать код в буфер обмена
  1. $properties->$new  = clone $default_properties;
а как в js левую часть расписать я уже не знаю
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB