Anteriormente, cuando necesitaba almacenar una serie de variables relacionadas, creaba una clase.
function Item(id, speaker, country) {
this.id = id;
this.speaker = spkr;
this.country = country;
}
var myItems = [
new Item(1, 'john', 'au'),
new Item(2, 'mary', 'us')
];
Pero me pregunto si esta es una buena práctica. ¿Existen otras formas mejores de simular una estructura en Javascript?
javascript
struct
nickf
fuente
fuente
Siempre uso literales de objeto
fuente
new READABLE_PART(ignore everything in here)
vuelve muy escaneable y autodocumentado, en lugar de hacerlo{read: "ignore", everything: "ignore", in: "ignore", here: "ignore"} // and then come up with READABLE_PART
en tu cabeza. La primera versión se puede leer mientras se avanza rápidamente. El segundo, refactoriza en estructuras simplemente para entender.El problema real es que se supone que las estructuras en un lenguaje son tipos de valor, no tipos de referencia. Las respuestas propuestas sugieren el uso de objetos (que son tipos de referencia) en lugar de estructuras. Si bien esto puede cumplir su propósito, evita el punto de que un programador realmente querría los beneficios de usar tipos de valor (como un primitivo) en lugar del tipo de referencia. Los tipos de valor, por ejemplo, no deberían causar pérdidas de memoria.
fuente
Creo que crear una clase para simular estructuras similares a C, como lo has estado haciendo, es la mejor manera.
Es una excelente manera de agrupar datos relacionados y simplifica el paso de parámetros a funciones. También diría que una clase de JavaScript se parece más a una estructura de C ++ que a una clase de C ++, considerando el esfuerzo adicional necesario para simular características orientadas a objetos reales.
Descubrí que tratar de hacer que JavaScript se parezca más a otro lenguaje se vuelve complicado rápidamente, pero soy totalmente compatible con el uso de clases de JavaScript como estructuras sin funciones.
fuente
Siguiendo la respuesta de Markus , en las versiones más nuevas de JS (ES6, creo), puede crear una fábrica de 'estructuras' de manera más simple usando las funciones de flecha y el parámetro de descanso de esta manera:
El resultado de ejecutar esto es:
Puede hacer que se vea similar a la tupla con nombre de Python:
Y los resultados:
fuente
Utilizo objetos estilo JSON para estructuras tontas (sin funciones miembro).
fuente
Hice una pequeña biblioteca para definir la estructura si trabaja con compatibilidad con ES6.
Es un analizador JKT, puede consultar el repositorio del proyecto aquí JKT Parser
Por ejemplo, puede crear su estructura así
fuente
Es más trabajo de configurar, pero si la capacidad de mantenimiento supera el esfuerzo de una sola vez, este puede ser su caso.
Ventajas:
fuente