Principiante total que aprende JS aquí. No entiendo por qué cuando declaras una variable, no hereda TOTALMENTE de sus métodos de clase principal, por ejemplo:
// I initiate an array (my question is the same for all type of vars) var myArr = ["foo", "bar"] // Let's say I call a random function of the parent class Array console.log(Array.isArray(myArr)); // true // Since I assume that myArr inherited of the COMPLETE LIST of Array's methods, I should be able to do this: console.log(myArr.isArray()); // Uncaught TypeError¿Por qué las variables no heredan todos los métodos de sus clases principales? En lugar de eso, debe mezclar las funciones de Array y myArr . Deben ser idénticos en los dos lados, ¿no?
Array.isArray también se puede llamar en no matrices, por lo que llamarlo desde la instancia de otras clases no tendría el método, lo que generaría un error de tiempo de ejecución. Básicamente, si supiera que es una matriz y se podría llamar, no necesitaría llamarla.
Es por eso que NO está en el prototipo Array y NO se puede llamar desde la instancia.
const a = null a.isArray() // bad Array.isArray(a) // goodLos desarrolladores tienen la opción en Javascript para agregar métodos a la clase, la instancia (también conocido como prototipo) o ambos. En este caso solo se agregó a la clase, no a la instancia.
Podría haberse agregado al prototipo de Object , pero aún así no estaría en las instancias de boolean , number , string , symbol o undefined .
Debe pasar una matriz como parámetro a la función isArray.
P.ej:
console.log(myArr.isArray(myArr))Cuando declara una variable, es una instancia de una Clase, no hay herencia.
Cuando declara una clase que extiende otra clase es donde ocurre la herencia.
Array.isArray() es una propiedad estática del objeto Array de JavaScript.
Por lo general, los métodos estáticos se utilizan para implementar funciones que pertenecen a la clase, pero no a ningún objeto en particular de la misma.