2013-09-10 4 views
1

Не уверен, если то, что я хочу, это возможно, ноОбновление массива при сохранении референс

Это работает:

pointer = arr1 = ['a','b','c']; 
arr1.splice(0, 1); 
console.log(pointer); // ['b','c'] 

То, что я хотел бы, но не работает:

pointer = arr1 = ['a','b','c']; 
arr1 = ['e','f']; 
console.log(pointer); // desired ['e','f'] 
console.log(pointer); // reality ['a','b','c'] 

Есть ли способ обойти это, кроме как постоянно обновлять переменную pointer каждый раз, когда arr1 переназначается?

+1

Нет, JavaScript не имеет указателей. Единственный способ был бы, если бы вы поместили Array в Object, а затем обновили массив Object. Тогда любая ссылка на объект увидит обновление. – user2736012

+0

Это великолепно! Я буду использовать объект и сохранить массив внутри, а затем сохранить ссылку на объект. Таким образом переназначение собственности не нарушит первоначальную ссылку. Пожалуйста, поместите это в ответ. – Fresheyeball

ответ

2

Нет, JavaScript не имеет указателей. Единственный способ был бы, если бы вы поместили Array в Object, а затем обновили массив Object. Тогда любая ссылка на объект увидит обновление.

var pointer = arr1 = {array:['a','b','c']}; 
arr1.array = ['e','f']; 

console.log(arr2.array); // ['e','f'] 
console.log(pointer.array); // ['e','f'] 
1

Javascript не имеет указателей.

Рекомендация, предоставленная @ user2736012 в комментариях, является хорошей идеей, то есть поставить Array в объект, а затем обновить массив объекта. Тогда любая ссылка на объект увидит обновление.

Смежные вопросы