Это невозможно с литералом объекта отдельно , как указывали другие.Тем не менее, процесс может быть завернут.Является или нет это "добавляет что-нибудь" является спорным.Это не то же самое, что Y-Combinator (возможно, половина?), Потому что он не пытается дать «рекурсивное имя» (насколько я могу сказать, Y-Combinator принимает первоклассные функции и замыкания илиспособ имитировать такой).
function bindMany (dict, res) {
res = res || {}
for (var k in dict) {
if (dict.hasOwnProperty(k)) {
var v = dict[p]
res[k] = v instanceof Function ? v(res) : v
}
}
return res
}
var o = bindMany({
foo: 5,
handler: function(obj){
return function() {
alert(obj.foo)
}
}
})
Не проверен, но показывает подход, который можно принять.Есть тонкие проблемы с этим и цепочкой прототипов на dict
/ res
, если таковые имеются - упражнение для читателя.
Удачное кодирование.