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;
и каждый раз, когда я пытался присвоить значение какой-либо позиции в матрице, все соответствующие позиции в других подмассивах также будут меняться.
Мне интересно, почему это происходит?
Кто-нибудь может ответить на этот вопрос?