Encontré un comportamiento muy extraño, estoy usando Firefox 93.0 de 64 bits, elijamos el siguiente ejemplo:
class SubArray extends Array{ constructor(...i){ super(...i) } }El comportamiento intuitivo, es que esta nueva clase debería hacer lo mismo que una matriz normal, con todas sus propiedades, pero no hace eso, obtenemos la siguiente en la consola.
a=new SubArray([1, 2, 3]) a[0] Array(3) [ 1, 2, 3 ]No estamos consiguiendo el primer elemento....
¿Cómo podemos extender una clase a una matriz y heredar apropiadamente las propiedades? (todos ellos, establecer elementos, obtener elementos, etc, etc)
Gracias,
como dice @Barmar.
Esto funcionará si hacemos new SubArray(1, 2, 3, 4) , esto se debe a que hay una diferencia entre las clases integradas y las clases de usuario, en las clases integradas que usamos [1, 2, 3] , estamos no usar el constructor de usuario normal, por lo que la equivalencia sería new Array(1, 2, 3) .
Solo para tener en cuenta, si estamos usando clases integradas de JS, debemos verificar cómo JS traduce la forma habitual como [] al constructor habitual, otro ejemplo sería, cómo se traduce {1: 'hi'} al ¿Constructor de objetos?, solo tenga en cuenta esta pregunta.