Skip to content

Commit a94e11b

Browse files
authored
Merge pull request #4199 from edalmava/javascript
#23 - Javascript
2 parents 53dbae9 + cf3954a commit a94e11b

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
let contador = 0
2+
let instancia
3+
4+
class Contador {
5+
constructor() {
6+
if (instancia) {
7+
throw new Error('Solo se puede crear una sola instancia')
8+
}
9+
10+
instancia = this
11+
}
12+
13+
getInstancia() {
14+
return this
15+
}
16+
17+
getContador() {
18+
return contador
19+
}
20+
21+
incrementar() {
22+
return ++contador
23+
}
24+
25+
decrementar() {
26+
return --contador
27+
}
28+
}
29+
30+
const estado = Object.freeze(new Contador())
31+
//const estado2 = new Contador() // Error: Solo se puede crear una sola instancia
32+
33+
estado.incrementar()
34+
estado.incrementar()
35+
estado.incrementar()
36+
estado.decrementar()
37+
console.log(`Valor de contador: ${estado.getContador()}`)
38+
39+
// RETO EXTRA
40+
41+
let instanciaSesion = null
42+
43+
class Sesion {
44+
constructor(id, username, nombre, email) {
45+
if (instanciaSesion) {
46+
throw new Error('Solo se puede crear una sola instancia')
47+
}
48+
49+
instanciaSesion = this
50+
this.id = id
51+
this.username = username
52+
this.nombre = nombre
53+
this.email = email
54+
}
55+
56+
getSesion() {
57+
return instanciaSesion
58+
?({ id: this.id, username: this.username, nombre: this.nombre, email: this.email })
59+
:null
60+
}
61+
62+
delSesion() {
63+
instanciaSesion = null
64+
}
65+
}
66+
67+
const usuario = Object.freeze(new Sesion('1090', 'edalmava', 'Edwin Martinez', '[email protected]'))
68+
console.log(JSON.stringify(usuario.getSesion()))
69+
usuario.delSesion()
70+
console.log(usuario.getSesion())

0 commit comments

Comments
 (0)