크하하 완전 재밌게 풀었다. 잡습도 리플렉션이 있구나..

[javascript]
var params = {'port':port,
'username':req.session.username,
'p_id':req.params.id,
'title':'',
'diffCount ' : 0,
'disCount' : 0,
'sameCount' : 0,
'likeCount' : 0,
'queCount' : 0,
'allCount' : 0
},
presentFn = function(){
Presentations.findById(req.params.id, function(err, p){
if(!p){
res.redirect('/list');
} else {
params.title = p.title;
res.render('presentation',params);
}
});
},
countFn = function(args){
var arg = args[idx++];
var param = {'to':params.p_id};
if(arg.emotion){
param.emotion = arg.emotion;
}
Comments.find(param).count(function(err, count){
params[arg.countNm] = count;
arg.callBack.call(this,args);
});
},
functions = [{'emotion' : '불만이 있습니다.', 'countNm' : 'disCount', 'callBack' :countFn},
{'emotion' : '다르게 생각합니다.', 'countNm' : 'diffCount', 'callBack' :countFn},
{'emotion' : '좋아합니다.', 'countNm' : 'likeCount', 'callBack' :countFn},
{'emotion' : '공감하고 있습니다.', 'countNm' : 'sameCount', 'callBack' :countFn},
{'emotion' : '궁금해 합니다.', 'countNm' : 'queCount', 'callBack' :countFn},
{'countNm' : 'allCount', 'callBack' :presentFn}
],
idx = 0;

countFn(functions);
[/javascript]

하지만... 결국 돌아가는건 아래 코드랑 똑같자나. 난 직관적인 코드가 더 좋으니, 내 코드에 손을 들겠다. 음하하핫!

그렇다고 고치진 않을께. 잡습 공부하긴 좋은 코드로구나.. +_+