JavaScript - почему Array.prototype.fill фактически заполняет «указатель» объекта при заполнении чего-либо вроде «new Object ()»

Я пытался использовать метод Array.prototype.fill для создания n x n2D массив но код был глючным, и я в конце концов обнаружил, что все массивы внутри на самом деле«указатели» на тот же массив.

Образец:

var matrix = new Array(10).fill(new Array(10), 0);

Я думал, что концептуально это может создать двумерный массив 10 x 10. Однако, если я назначу значение матрице [0] [0]:

matrix[0][0] = 1;

Результат на самом деле будет:

matrix[0][0] === 1;
matrix[1][0] === 1;
matrix[2][0] === 1;
matrix[3][0] === 1;
matrix[4][0] === 1;
matrix[5][0] === 1;
matrix[6][0] === 1;
matrix[7][0] === 1;
matrix[8][0] === 1;
matrix[9][0] === 1;

и каждый раз, когда я пытался присвоить значение какой-либо позиции в матрице, все соответствующие позиции в других подмассивах также будут меняться.

Мне интересно, почему это происходит?

Кто-нибудь может ответить на этот вопрос?

Ответы на вопрос(4)

Ваш ответ на вопрос