Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2014, 18:16
Новичок на форуме
Отправить личное сообщение для rubo-21 Посмотреть профиль Найти все сообщения от rubo-21
 
Регистрация: 29.01.2014
Сообщений: 4

Почему стал pointer-ом?
Привет всем.
допустим у меня есть такой код:
var obj1 = {
	a: 1,
	b: 2,
};

var obj2 = {
	a: 3,
	b: 4,
};

var array1 = [obj1,obj2];
var array2 = array1;

console.log('array1');
console.log(array1);
console.log('array2');
console.log(array2);

array2.splice(0, 1);

console.log('array1');
console.log(array1);
console.log('array2');
console.log(array2);


и вот результат кода:


мне интересно почему array2 стал pointer-ом array1?
вить это "=" не оператор присваивания?

Пожалуйста объясните почему это происходит и как обойтись?

Дополнения:
<script>

var obj1 = {
	a: 1,
	b: 2,
};

var obj2 = {
	a: 3,
	b: 4,
};

var array1 = [obj1,obj2];
var array2 =  new Array;

for(var i=0;i<array1.length;i++){
	array2.push(array1[i]);
}

console.log('array1');
console.log(array1);
console.log('array2');
console.log(array2);

array2.splice(0, 1);

console.log('array1');
console.log(array1);
console.log('array2');
console.log(array2);

</script>




вот так я получаю то что хочу,но мне кажется что это не очень хорошая решения.

Последний раз редактировалось rubo-21, 29.01.2014 в 18:54. Причина: Дополнения
Ответить с цитированием
  #2 (permalink)  
Старый 29.01.2014, 18:24
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от rubo-21
мне интересно почему array2 стал pointer-ом array1?
так всегда было. переменные-объекты - это всегда ссылки на объекты (массив тоже объект)
Сообщение от rubo-21
вить это "=" не оператор присваивания?
оператор присваивания. одной ссылке присваивается значение из другой ссылки. объект общий.
Сообщение от rubo-21
как обойтись?
обойтись без чего?

var array2 = array1.slice(0); - это может спасти гиганта мысли?
Ответить с цитированием
  #3 (permalink)  
Старый 29.01.2014, 18:30
Новичок на форуме
Отправить личное сообщение для rubo-21 Посмотреть профиль Найти все сообщения от rubo-21
 
Регистрация: 29.01.2014
Сообщений: 4

а как решить эту проблему ?
у меня есть массив(friends),в котором я храню друзей,и есть 2-ой массив(tmpFriends) на котором та же самое, но каждый раз из 2-ого массива(tmpFriends) я удаляю один элемент,мне надо что тот элемент который я удалил из второго массива (tmpFriends),не удалился из первого(friends)....как это делать ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему можно использовать id элемента без использования getElementById? grifangel Общие вопросы Javascript 3 08.01.2014 22:20
Центрирование Div-а ч2 alex2012 jQuery 0 15.11.2012 19:01
Почему некоторые операторы возвращают значения, а не ссылки? dump Общие вопросы Javascript 15 25.07.2012 17:28
Регулярные выражения. Почему находи именно так? jsuse Общие вопросы Javascript 4 21.11.2011 16:37
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39