JavaScript: por qué Array.prototype.fill en realidad llena un "puntero" de objeto al llenar algo como 'nuevo Object ()'

Estaba tratando de usar el método Array.prototype.fill para crear un n x nMatriz 2D pero el código tenía errores y eventualmente descubrí que todas las matrices en el interior son en realidad"punteros" a la misma matriz.

Muestra:

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

Pensé conceptualmente que esto podría crear una matriz 2D de 10 x 10. Sin embargo, si asigno valor a la matriz [0] [0]:

matrix[0][0] = 1;

El resultado en realidad será:

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;

y cada vez que intente asignar un valor a cualquiera de las posiciones en la matriz, todas las posiciones correspondientes en otras sub-matrices también cambiarán.

Me pregunto por qué está sucediendo.

¿Alguien puede responder a esta pregunta de rascarse la cabeza?

Respuestas a la pregunta(4)

Su respuesta a la pregunta