Hola, estoy intentado resolver el ejercicio CU01149E del curso de JavaScript y la verdad es que no entiendo porqué el código no se ejecuta como debiera. 
Tal y como yo he entendido el ejercicio, los objetos zanahoria, lechuga y tomate tienen como prototipo al objeto hortaliza (un prototipo hortaliza para zanahoria, otro para lechuga, y otro para tomate). A su vez, el objeto hortaliza tiene como prototipo al objeto planta cultivada; por último, planta cultivada tiene como prototipo al objeto vegetal. 
El caso es que cuando intento acceder a las propiedades definidas para los objetos primarios y sus prototipos, sólo obtengo los resultados esperados para 'tomate' y para 'hortaliza', que es su prototipo directo. Si intento acceder a las propiedades 'nombreCientifico' o 'movilidad, definidas para 'plantaCultivada' y 'vegetal' respetivamente el valor que me devuelve es undefined. No sé porqué ocurre esto.
Si alguien pudiera echarme una mano se lo agradecería. Un saludo.
<!DOCTYPE html>
<html>
	<head>
<script type="text/javascript">
	function zanahoria() {
		this.valorCalórico = '45 cal';
		this.tipoDeHortaliza = undefined;
	}
	
	function lechuga() {
		this.valorCalórico = '31 cal';
		this.tipoDeHortaliza = undefined;
	}
	
	function tomate() {
		this.valorCalórico = '39 cal';
		this.tipoDeHortaliza = undefined;
	}
	
	function hortaliza() {
		this.componentePrincipal = 'agua';
	}
	
	zanahoria.prototype = new hortaliza();
	lechuga.prototype = new hortaliza();
	tomate.prototype = new hortaliza();
	
	function plantaCultivada() {
		this.nombreCientifico = 'desconocido';
	}
	
	hortaliza.prototype = new plantaCultivada();
	
	function vegetal() {
		this.movilidad = 'ser vivo sin movilidad';
	}
	
	plantaCultivada.prototype = new vegetal();
	
	function empezar() {
		var tomate1 = new tomate();
		tomate1.tipoDeHortaliza = 'tomatillo';
		tomate1.nombreCientifico = 'tomatus totalus';
		alert(tomate1.tipoDeHortaliza);
		alert(tomate1.valorCalórico);
		alert(tomate1.componentePrincipal);
		alert(tomate1.nombreCientífico); //undefined
		alert(tomate1.movilidad); //undefined
	}
	
	
</script>
	</head>
	<body>
		<p onclick="empezar()">Empezar</p>
	</body>
</html>