Nie mogę uwierzyć, że nie zostało to jeszcze opublikowane: użyj notacji ze strzałką z anonimową oceną!
Całkowicie nieinwazyjny, nie zadziera z przestrzenią nazw i zajmuje tylko jedną linię:
myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
próbny:
var myKey="valueof_myKey";
var myValue="valueof_myValue";
var myNewObj = ((k,v)=>{o={};o[k]=v;return o;})(myKey,myValue);
console.log(myNewObj);
przydatne w środowiskach, które nie obsługują {[myKey]: myValue}
jeszcze nowej składni, takich jak - najwyraźniej; Właśnie to zweryfikowałem w konsoli Web Developer - Firefox 72.0.1, wydany 08.01.2020.
(Jestem pewien, że mógłbyś potencjalnie stworzyć jakieś bardziej wydajne / rozszerzalne rozwiązania lub cokolwiek obejmującego sprytne użycie reduce
, ale w tym momencie prawdopodobnie lepiej byś był obsługiwany przez rozbicie stworzenia obiektu na swoją własną funkcję zamiast kompulsywnego blokowania go wszystko w linii)
nie, że jest to ważne, ponieważ PO zadał to dziesięć lat temu, ale dla kompletności boską i zademonstrować, jak to jest dokładnie odpowiedź na pytanie, jak stwierdził, pokażę to w oryginalnym kontekście:
var thetop = 'top';
<something>.stop().animate(
((k,v)=>{o={};o[k]=v;return o;})(thetop,10), 10
);