Anteriormente, quando eu precisava armazenar várias variáveis relacionadas, eu criava uma classe.
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')
];
Mas estou me perguntando se essa é uma boa prática. Existe alguma outra maneira melhor de simular uma estrutura em Javascript?
javascript
struct
nickf
fonte
fonte
Eu sempre uso literais de objeto
fonte
new READABLE_PART(ignore everything in here)
torna-se muito digitalizável e autodocumentável, ao contrário de{read: "ignore", everything: "ignore", in: "ignore", here: "ignore"} // and then come up with READABLE_PART
sua cabeça. A primeira versão pode ser lida durante o paging rapidamente. A segunda, você refatora em estruturas apenas para entender.O verdadeiro problema é que as estruturas em uma linguagem devem ser tipos de valor e não tipos de referência. As respostas propostas sugerem o uso de objetos (que são tipos de referência) no lugar de estruturas. Embora isso possa servir ao seu propósito, ele contorna o ponto de que um programador realmente desejaria os benefícios de usar tipos de valor (como um primitivo) em vez do tipo de referência. Os tipos de valor, por exemplo, não devem causar vazamentos de memória.
fonte
Acho que criar uma classe para simular estruturas semelhantes a C, como você tem feito, é a melhor maneira.
É uma ótima maneira de agrupar dados relacionados e simplifica a passagem de parâmetros para funções. Eu também diria que uma classe JavaScript é mais parecida com uma estrutura C ++ do que com uma classe C ++, considerando o esforço adicional necessário para simular recursos reais orientados a objetos.
Descobri que tentar tornar o JavaScript mais parecido com outra linguagem fica complicado rápido, mas eu apoio totalmente o uso de classes JavaScript como estruturas sem função.
fonte
Seguindo a resposta de Markus , em versões mais recentes de JS (ES6 eu acho), você pode criar uma fábrica de 'estrutura' de forma mais simples usando Funções de seta e Parâmetro de descanso como:
O resultado disso é:
Você pode torná-lo semelhante ao namedtuple do Python:
E os resultados:
fonte
Eu uso objetos de estilo JSON para estruturas burras (sem funções de membro).
fonte
Fiz uma pequena biblioteca para definir struct se você trabalha com compatibilidade ES6.
É um analisador JKT, você pode verificar o repositório do projeto aqui. JKT Parser
Por exemplo, você pode criar sua estrutura como esta
fonte
É mais trabalhoso configurar, mas se a manutenção supera o esforço único, então este pode ser o seu caso.
Vantagens:
fonte