Buenas.
EJERCICIO 1
Dado este fragmento de código. Revísalo y responde a las siguientes preguntas:
var persona1 = {};
Object.defineProperty(persona1, "edad", { value: 42, writable: false });
persona1.edad = 19;
a) Explica paso a paso el significado de este código (busca información en internet si te es preciso).
b) Crea un pequeño script donde se ejecute este código y se muestre un mensaje por pantalla informando del valor de la edad. Activa la consola para comprobar si aparece algún error.
c) Crea el mismo script pero usando strict mode. Activa la consola y comprueba si aparece algún error. ¿Qué diferencias observas entre la ejecución con strict mode y sin strict mode? ¿Qué explicación le darías a estas diferencias? ¿Crees que sería positivo que este código se escribiera en strict mode o no? ¿Por qué?
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com CU01189E</title><meta charset="utf-8">
<script type="text/javascript">
function testEjercicio1(){
'use strict';
var persona1 = {};
Object.defineProperty(persona1, 'edad',{value:42, writable:false});
persona1.edad = 19;
alert(persona1.edad);
}
</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="testEjercicio1()">Pulse aquí.</div>
</body>
</html>
a)Se crea un objeto persona1, vacío. Se le añade la propiedad edad con valor 42 al objeto persona1. Y se establece que no se podrá editar el valor de dicha propiedad, mediante writable:false. La última linea intenta dar un nuevo valor a la propiedad edad del objeto persona1.
b)No dá ningún error.
c)Aparece el siguiente error: "TypeError: "edad" is read-only", y en otro navegador: Uncaught TypeError: Cannot assign to read only property 'edad' of object '#<Object>'". Que vienen a decir que no se puede cambiar el valor de una propiedad que es de solo lectura. En este caso la única diferencia es que con strict mode da error la linea "persona1.edad = 19;". Creo que si sería positivo, porque nos evitaríamos usar código innecesario.
EJERCICIO 2
Crea y ejecuta un script que use with y que esté:
a) En modo normal. ¿Cuál es el código y cuál es el resultado que obtienes?
b) En strict mode. ¿Cuál es el código y cuál es el resultado que obtienes?
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function testEjercicio2(){
'use strict';
with(document.body.style){
backgroundColor = 'black';
}
}
</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="testEjercicio2()">Pulse aquí.</div>
</body>
</html>
a)Que se ejecuta el código y cambia el color de fondo.
b)Que no se ejecuta el código porque da un error. "SyntaxError: strict mode code may not contain 'with' statements"
Saludos.