Вы правы. Любой объект, переданный вашей функции, будет передан по ссылке и изменен, когда вы установите пропеллер URL.
Самый простой способ защититься от этих ошибок - быть осторожным, чтобы не изменять объекты. Альтернативой является создание новых объектов, используя значения из вашего embedOptions
:
const embedCopy = Object.assign({}, embedOptions);
embedCopy.url = url;
. Это будет работать, если ваш объект не содержит объекты в качестве значений, и в этом случае вам нужно будет сделать глубокую копию ваш объект.
Существует множество библиотек, которые могут с этим справиться, например lodash
или ramda
.