Раньше, когда мне нужно было хранить несколько связанных переменных, я создавал класс.
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')
];
Но мне интересно, хорошая ли это практика. Есть ли другие, более эффективные способы имитации структуры в Javascript?
javascript
struct
nickf
источник
источник
Я всегда использую объектные литералы
источник
new READABLE_PART(ignore everything in here)
становится очень легко читаемым и самодокументируемым, а не в уме{read: "ignore", everything: "ignore", in: "ignore", here: "ignore"} // and then come up with READABLE_PART
. Первая версия доступна для чтения при быстром листании. Во-вторых, вы реорганизуете структуры просто для понимания.Настоящая проблема заключается в том, что структуры в языке должны быть типами значений, а не ссылочными типами. Предлагаемые ответы предполагают использование объектов (которые являются ссылочными типами) вместо структур. Хотя это может служить своей цели, оно позволяет избежать того факта, что программисту действительно нужны преимущества использования типов значений (например, примитивов) вместо ссылочного типа. Типы значений, например, не должны вызывать утечки памяти.
источник
Я думаю, что создание класса для имитации C-подобных структур, как вы это делали, - лучший способ.
Это отличный способ группировать связанные данные и упрощает передачу параметров функциям. Я также утверждаю, что класс JavaScript больше похож на структуру C ++, чем на класс C ++, учитывая дополнительные усилия, необходимые для моделирования реальных объектно-ориентированных функций.
Я обнаружил, что попытки сделать JavaScript более похожим на другой язык быстро усложняются, но я полностью поддерживаю использование классов JavaScript как структур без функций.
источник
Следуя ответу Маркуса , в более новых версиях JS (я думаю, ES6) вы можете создать фабрику struct проще, используя функции стрелок и параметр отдыха, например:
Результат выполнения этого:
Вы можете сделать его похожим на namedtuple в Python:
И результаты:
источник
Я использую объекты в стиле JSON для тупых структур (без функций-членов).
источник
Я сделал небольшую библиотеку для определения структуры, если вы работаете с совместимостью с ES6.
Это парсер JKT, вы можете проверить репозиторий проекта здесь JKT Parser
Для примера вы можете создать свою структуру следующим образом
источник
Это больше работы по настройке, но если ремонтопригодность превосходит разовые усилия, то это может быть ваш случай.
Преимущества:
источник