Eu não posso acreditar que isso ainda não foi publicado: basta usar a seta-notação com a avaliação anônima!
Completamente não invasivo, não mexe com o espaço para nome e leva apenas uma linha:
myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
demo:
var myKey="valueof_myKey";
var myValue="valueof_myValue";
var myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
console.log(myNewObj);
útil em ambientes que ainda não suportam a nova {[myKey]: myValue}
sintaxe, como - aparentemente; Acabei de verificar no meu console do desenvolvedor da Web - Firefox 72.0.1, lançado em 20-01-2008.
(Tenho certeza de que você poderia potencialmente criar soluções mais poderosas / extensíveis ou o que quer que envolva o uso inteligente de reduce
, mas nesse momento você provavelmente seria melhor atendido apenas quebrando a criação de objetos em sua própria função, em vez de ativá-la compulsivamente tudo em linha)
não que isso importe, já que o OP pediu isso há dez anos, mas por uma questão de exaustividade e para demonstrar como é exatamente a resposta para a pergunta conforme declarada, mostrarei isso no contexto original:
var thetop = 'top';
<something>.stop().animate(
((k,v)=>{o={};o[k]=v;return o;})(thetop,10), 10
);