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
Форумы портала PHP.SU :: Версия для печати :: Изменение объекта за счет изменения другого объекта, как предотвратить?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Изменение объекта за счет изменения другого объекта, как предотвратить?

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

1. Иван14 - 02 Августа, 2012 - 03:10:08 - перейти к сообщению
Всем привет. сижу и мучаюсь над проблемой и не знаю как сделать, дано:

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 , почему? подскажите что не так делаю...
2. LIME - 02 Августа, 2012 - 03:23:27 - перейти к сообщению
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
а проверить лень))
(Добавление)
скорее можно
3. Иван14 - 02 Августа, 2012 - 04:45:40 - перейти к сообщению
LIME пишет:
везде
иначе вы просто создаете массив
причем вы присваиваете не значение а ссылку на объект
в пхп также устроено


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

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


как добиться того же, но только чтобы я мог свойство задать через переменную new ??
4. tuareg - 02 Августа, 2012 - 08:08:02 - перейти к сообщению
Иван14 Вам выше дали ссылку. Почитайте, там все хорошо расписано.
5. LIME - 02 Августа, 2012 - 21:31:33 - перейти к сообщению
tuareg он об этом примерно
PHP:
скопировать код в буфер обмена
  1. $properties->$new  = clone $default_properties;
а как в js левую часть расписать я уже не знаю

 

Powered by ExBB FM 1.0 RC1