Вы можете сделать функцию-создатель-функцию, которая была бы довольно близка
function speaker(message){ return function(caller){
this.speak(this.randomOption(message + '_msg');
};}
{
'tea': speaker('tea'),
'chill': speaker('chill')
}
И если вы хотите избежать повторного ввода 'tea' и 'chill', вы можете использовать синтаксис подписки объектов []
вместе с некоторым циклом:
var funs = {};
var msgs = ['tea', 'chill'];
for(var i=0; i<msgs.length; i++){
var msg = msgs[i];
funs[msg] = speaker(msg);
}
Просто будьте осторожны с замыканиями внутри цикла, если вы хотите вместо этого написать встроенную функцию динамика.