JavaScript наследование

Рейтинг: 1Ответов: 1Опубликовано: 22.01.2015

Добрый день.

Есть такой код:

var a = [],
    b = [],
    c = [ 1, 2 ];

a = b = c;

a[2] = 3;

console.log(b);

По сути переменную b после присвоения ей значения мы не меняем. Но она меняется вместе с a.

Как это исправить?

Ответы

▲ 4Принят

В данном случае присваивание всего лишь записывает ссылку на массив [1, 2] в переменные "a" и "b". Иными словами, каждая из переменных не содержит отдельный массив, а ссылается на один и тот же объект в памяти компьютера. Чтобы скопировать массив или его часть по значению (то есть записать в каждую из переменных уникальный массив), можно воспользоваться методом Array.prototype.slice().

P.S. К наследованию заданный вами вопрос не имеет никакого отношения.