Como criar objeto "svg" sem anexá-lo?

Considere o seguinte código:

var svg = d3.select('#somediv').append("svg").attr("width", w).attr("height", h);

Eu gostaria de refatorar este código para que ele leia mais assim:

var svg = makesvg(w, h);
d3.select("#somediv").append(svg);

Note que, em contraste com a situação mostrada na primeira versão, nesta segunda versãoappend não cria o objeto "svg"; só acrescenta parad3.select("#somediv").

O problema é como implementar a funçãomakesvg. Isso, por sua vez, reduz o problema: como instanciar um objeto "svg" sem usarappend para fazer isso, desde que se poderia fazer algo como:

function makesvg(width, height) {
  return _makesvg().attr("width", w).attr("height", h);
}

Então, minha pergunta se resume ao que é o equivalente genérico do hipotético_makesvg() fábrica mencionada acima?

questionAnswers(6)

yourAnswerToTheQuestion