Это объект.Эта нотация используется для имитации именованных аргументов - то, что JS не может сделать изначально AFAIK.
Это позволяет бесконечно расширять дополнительные аргументы, не объявляя их в объявлении функции:
function myfunc(args) { }
vs.
function myfunc(duration, opacity, width, height, speed) { }
и - что наиболее важно - он позволяет произвольно упорядочивать аргументы:
{"duration": "0.5",
"width": 300,
"speed": 2 }
Видеть, как много разработчиков JS не работают в контексте IDE (который отображал быожидаемые параметры функции, использующие «упреждающий просмотр»), это очень удобно, поскольку вам не нужно запоминать порядок появления параметров, когда.
Недостатком этого является то, что если есть является средой IDE, очень трудно обеспечить какие-либо функции "упреждения" для этих ложных именованных аргументов, и произвольный порядок аргументов может привести к некоторой степени хаоса в долгосрочной перспективе.