Я не могу поверить, что это еще не было опубликовано: просто используйте обозначение стрелки с анонимной оценкой!
Полностью неинвазивный, не связывается с пространством имен и занимает всего одну строку:
myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
демо:
var myKey="valueof_myKey";
var myValue="valueof_myValue";
var myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
console.log(myNewObj);
полезен в средах, которые еще не поддерживают новый {[myKey]: myValue}
синтаксис, таких как - очевидно; Я только что проверил это на своей консоли веб-разработчика - Firefox 72.0.1, выпущенной 2020-01-08.
(Я уверен, что вы могли бы потенциально сделать несколько более мощных / расширяемых решений или что-либо, включающее умное использование reduce
, но в этот момент вам, вероятно, будет лучше, если вы просто разбиваете создание объекта на его собственную функцию, а не навязываете его принудительно все встроено)
не то, чтобы это имело значение с тех пор, как ОП задала этот вопрос десять лет назад, но для полноты картины и для демонстрации того, насколько точным является ответ на поставленный вопрос, я покажу это в первоначальном контексте:
var thetop = 'top';
<something>.stop().animate(
((k,v)=>{o={};o[k]=v;return o;})(thetop,10), 10
);