Tu implementación está rota, tenés una unica variable para multiples instancias (name):
Código Javascript
:
Ver originalvar a = new Triangulo(10, 10, 60, 'a');
var b = new Triangulo(10, 10, 60, 'b');
a.getName(); // b
Te diría que te esfuerzes mas en entender como funciona JavaScript más que en manipularlo y aplastarlo para parecerse a otros lenguajes muy distintos.
Funciones privadas? Si algo es privado no lo accedas.
Polimorfismo? Si, un poco más laxo por falta de interfaces, pero igual de util.
Herencia? Si, hay mecanismos del lenguaje que lo permiten.
Override? Tan sencillo como declarar un metodo/property en el objeto actual o en algun prototipo mas cercano.