No puedo creer esto no se haya publicado todavía: ¡solo use la notación de flecha con una evaluación anónima!
Completamente no invasivo, no se mete con el espacio de nombres, y solo se necesita una línea:
myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
manifestación:
var myKey="valueof_myKey";
var myValue="valueof_myValue";
var myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
console.log(myNewObj);
útil en entornos que aún no admiten la nueva {[myKey]: myValue}
sintaxis, como, aparentemente; Lo acabo de verificar en mi Consola de desarrollador web: Firefox 72.0.1, lanzado el 2020-01-08.
(Estoy seguro de que potencialmente podría hacer algunas soluciones más potentes / extensibles o lo que sea que implique un uso inteligente de reduce
, pero en ese punto, probablemente sería mejor servir simplemente dividiendo la creación de objetos en su propia función en lugar de bloquearla compulsivamente todo en línea)
no es que importe, ya que OP preguntó esto hace diez años, pero por el bien de la integridad y para demostrar cómo es exactamente la respuesta a la pregunta como se indicó, lo mostraré en el contexto original:
var thetop = 'top';
<something>.stop().animate(
((k,v)=>{o={};o[k]=v;return o;})(thetop,10), 10
);