Como você pode classificar uma matriz sem alterar a matriz original?

Vamos supor que eu queria uma função de classificação que retorne uma cópia classificada da matriz inserida. Eu tentei ingenuamente isso

function sort(arr) {
  return arr.sort();
}

e eu testei com isso, o que mostra que meusort está modificando a matri

var a = [2,3,7,5,3,7,1,3,4];
sort(a);
alert(a);  //alerts "1,2,3,3,3,4,5,7,7"

Eu também tentei essa abordagem

function sort(arr) {
  return Array.prototype.sort(arr);
}

mas não funcion

Existe uma maneira simples de contornar isso, de preferência uma maneira que não exija a rolagem manual do meu próprio algoritmo de classificação ou a cópia de todos os elementos da matriz para um nov

questionAnswers(12)

yourAnswerToTheQuestion