Итак, прочитав документацию по MDN и несколько других статей, мне удалось написать код для создания элементов svg с JS.
const _namespace = 'http://www.w3.org/2000/svg';
const _svg = document.createElementNS(_namespace, 'svg');
_svg.setAttributeNS(_namespace, 'width',this.width);
_svg.setAttributeNS(_namespace, 'height',this.height);
_svg.setAttributeNS(_namespace, 'viewBox',`0 0 ${this.width} ${this.height}`);
this.container.appendChild(_svg);
С кодом ниже элемент svg добавляется в DOM, но не учитывает значения ширины, высоты или viewBox. Он отображает с использованием размера по умолчанию 300 x 150.
Теперь, изменив _namespace на null в методе setAttributeNS, кажется, все работает.
Мой вопрос заключается в том, что является логическим объяснением такого поведения ? И почему go к проблеме использования метода setAttributeNS, если мы собираемся просто установить пространство имен в null?