ILoveYAnny: Варианты (2) и (3) подходят только для маленького количества записей. Я думал, что у вас что-то вроде ленты пользовательского контента, т. е. потенциально очень много записей. Если нет, то без разницы как делать (вариант 3 может быть быстрее, чем 2, если прокручивается вся таблица; 2 быстрее 3, если там есть условие типа WHERE user=$current_user или тому подобное, т. е. в итоге показывается лишь малая часть таблицы). Вариант (1) не знаю что ответить, зависит от запроса.
ILoveYAnny: Нужно ли рассматривать случай, в котором между запросами, для которых нужны разные ответы, произойдет модификация таблицы? Например, вставка или удаление строки.
.forEach(v => {this[v] = cloneObject(obj)})
, где