Saya tidak bisa percaya ini belum diposting: cukup gunakan panah-notasi dengan evaluasi anonim!
Sepenuhnya non-invasif, tidak mengacaukan namespace, dan hanya membutuhkan satu baris:
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);
berguna dalam lingkungan yang belum mendukung {[myKey]: myValue}
sintaks baru , seperti — tampaknya; Saya baru saja memverifikasi di Konsol Pengembang Web saya — Firefox 72.0.1, dirilis 2020-01-08.
(Saya yakin Anda berpotensi membuat beberapa solusi yang lebih kuat / dapat diperluas atau apa pun yang melibatkan penggunaan yang cerdas reduce
, tetapi pada saat itu Anda mungkin akan lebih baik dilayani dengan hanya membagi Obyek-penciptaan ke dalam fungsinya sendiri daripada secara kompulsif mengganggunya semua sebaris)
bukan hal itu penting karena OP bertanya ini sepuluh tahun yang lalu, tapi untuk kelengkapan demi dan untuk menunjukkan bagaimana hal ini persis dengan jawaban atas pertanyaan seperti yang dinyatakan, saya akan menunjukkan ini dalam konteks aslinya:
var thetop = 'top';
<something>.stop().animate(
((k,v)=>{o={};o[k]=v;return o;})(thetop,10), 10
);