function order(unordered)
{
return _.object(_.sortBy(_.pairs(unordered),function(o){return o[0]}));
}
Если вы не доверяете браузеру сохранению порядка ключей, я настоятельно рекомендую полагаться на упорядоченный массив ключей -value парные массивы.
_.sortBy(_.pairs(c),function(o){return o[0]})
Основное различие между этими двумя шаблонами - это:
В ActiveRecord у Вас есть один объект области, который и знает всю бизнес-логику и как сохранить/обновить себя в базе данных, user.getLinkToProfile () и Пользователь:: найдите (1), Пользователь:: сохраните (пользователь)
В шаблоне DataMapper у Вас есть один объект области, который содержит всю бизнес-логику, для экс-клена user.getLinkToProfile () (или что-то подобное), но ничего не знает о рассматриваемой базе данных, в дополнение к этому у Вас есть объект картопостроителя, который ответственен за сохранение, обновление, выбор, и т.д. пользовательские объекты от базы данных, которая имела бы UserMapper:: найдите (1), UserMapper.save (пользователь)
DataMapper потенциально более сложен затем ActiveRecord, но намного легче разработать Вашу модель предметной области и базу данных, асинхронную затем с ActiveRecord.
Активная запись очень тяжела, картопостроитель данных и объект области выделяют те проблемы, таким образом, у Вас есть более определенный набор кода, делающего различные аспекты для Вас объекты "объекта" или "домен".
Я лично предпочитаю, не, что Вы спросили, идя с разделением в объект области, картопостроитель данных, вероятно, используйте шаблон блока и даже шаблон передачи данных для уверения четкого разделения того, что происходит с данными между базой данных верхние уровни приложения.
... изящные и простые разделения всегда помогают.