Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Это будет копия или реф объекта? (код внутри) (https://javascript.ru/forum/events/51662-ehto-budet-kopiya-ili-ref-obekta-kod-vnutri.html)

kostyanet 14.11.2014 17:29

Это будет копия или реф объекта? (код внутри)
 
Внезапно кроме ключей-строк понадобились индексы-номера для доступа к объекту в коллекции объектов примерно такого вида.

inputs[name]={
	elem:		elem,
	error:		null,
	type:		type,
	title:		elem.title,
// тут еще много чего
};


а теперь если я вот так напишу

inputs[index]=inputs[name];

то inputs[index] будет рефом (ну или копией рефа), или в него все это целиком запишется?

krutoy 14.11.2014 17:39

kostyanet,
Конечно рефом. Ты же не копируешь, а просто ссылку кидаешь.

kostyanet 14.11.2014 17:43

Почему конечно? По какому признаку оно определяется? Ну то есть скажем в php я бы написал $inputs[index] =& $inputs[name] - сразу все видно. С тн live-коллекциями из DOM более-менее понятно, что браузер скопилил на то и ссылки. А что и свои объекты-массивы в js все такие же?

danik.js 14.11.2014 18:00

Цитата:

Сообщение от kostyanet
По какому признаку оно определяется?

Не нужно никаких признаков. Объекты не копируются.

danik.js 14.11.2014 18:01

alert( inputs[index]===inputs[name]);

inputs[index].newProp = 1;
alert(inputs[name].newProp);

krutoy 14.11.2014 18:03

kostyanet,
По очень простому
o={}

o_={
a: o,
}
o_.b=o_.a

alert(o_.a===o_.b)

kostyanet 14.11.2014 18:16

Нет, я-то сделал, работает, но как-то не ясно было как, хоть похеру все равно, клиент же жырный, пусть и копируется.

Цитата:

Сообщение от danik.js
Объекты не копируются.

Ну да, в общем-то, то есть вы имели ввиду не клонируются автоматически. Что-то все равно копируется, иначе как добыть.

kostyanet 14.11.2014 18:21

Цитата:

Сообщение от krutoy
По очень простому

Я писал про некий признак, но видимо он генеральный. Да там вообще конкретика такая что индекс только достать elem, но, поскольку имена-строки сроду не пересекутся с индексами-числами, то я подумал засунуть все в один. Засунулось

krutoy 14.11.2014 18:24

kostyanet,
Да какой признак. В JS ничего под ковром не копируется. Все явно создается, а затем наполняется ссылками на уже существующее.

danik.js 14.11.2014 18:32

Цитата:

Сообщение от kostyanet
я подумал засунуть все в один. Засунулось

var element = document.createElement('div');
element.id = 'abc';


alert(element.attributes['id'].value);
alert(element.attributes[0].value);


Часовой пояс GMT +3, время: 13:31.