Я не можу повірити, що це ще не було опубліковано: просто використовуйте стрілочні позначення з анонімною оцінкою!
Повністю неінвазивний, не возиться з простором імен, і він займає лише один рядок:
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
);