-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path13-1_objectsFuncionConstructora.js
199 lines (159 loc) · 4.78 KB
/
13-1_objectsFuncionConstructora.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
// Objects: Función constructora
// Existe un problema al momento de construir varios objetos a partir de un código base, los atributos deben cambiar con respecto a la nueva información. Para esto se utiliza una función constructora.
// Una función constructora sirve para crear varios objetos a partir de nueva información, esto es recibido argumentos.
// Cómo generar varios objetos a partir de una función constructora
// Para crear una función constructora, debemos definir los parámetros correspondientes, que serán los atributos del objeto, que cambiarán con la nueva información mediante argumentos. Estos argumentos deben hacer referencia a cada uno del nuevo objeto, esto mediante el objeto contexto this.
// Ten en cuenta que los parámetros de la función son diferentes a los atributos del objeto 😄.
// Los constructores comienzan con mayúscula.
function Auto(brand, model, year){
this.marca = brand;
this.modelo = model;
this.año = year;
this.detalle = function () {
let mensaje = `Auto ${this.modelo} del ${this.año}.`;
return mensaje
}
}
// Si ejecutamos la función Auto mostrará un error, necesitamos especificar que vamos a construir una instancia mediante la palabra reservada new.
var miAuto = new Auto("Toyota", "Corolla", 2020)
/* Auto {
marca: 'Toyota',
modelo: 'Corolla',
'año': 2020,
detalle: ƒ ()
}*/
console.log( miAuto.detalle() );
// De esta manera, puedes crear varios objetos a partir de una función constructora que permita especificar atributos y métodos personalizados.
var otroAuto1 = new Auto("Tesla", "Model 3", 2021);
var otroAuto2 = new Auto("Suzuki", "K-20", 2019);
var otroAuto3 = new Auto("Ferrari", "Model N", 2018);
console.log( miAuto );
console.log( otroAuto1 );
console.log( otroAuto2 );
console.log( otroAuto3 );
console.log( miAuto.detalle() );
console.log( otroAuto1.detalle() );
console.log( otroAuto2.detalle() );
console.log( otroAuto3.detalle() );
// Puede que observes la propiedad __proto__, no te preocupes, ya lo aprenderás.
// Próximos pasos:
// El tema de objetos es extenso, por lo que te dejaré los respectivos cursos del tema:
// Curso de Programación Orientada a Objetos: POO
// Curso Básico de Programación Orientada a Objetos con JavaScript
// Curso Intermedio de Programación Orientada a Objetos en JavaScript
// Ejercicio: Ingresar los datos por la web
function Auto1(MARCA, MODELO, ANNIO){
this.marca = MARCA;
this.modelo = MODELO;
this.annio = ANNIO;
}
var autos = [];
for(let i = 0 ; i < 3 ; i++){
var marca = prompt("Ingresa la marca del auto");
var modelo = prompt("Ingresa el modelo del auto");
var annio = prompt("Ingresa el año del auto");
autos.push(new Auto1 (marca, modelo, annio));
}
for(let i = 0 ; i < autos.length ; i++){
console.log(autos[i]);
}
// Ejercicio: Crear una base de datos e imprimir los objetos automatico
var marca = [
"Abarth",
"Alfa Romeo",
"Aston Martin",
"Audi",
"Bentley",
"BMW",
"Cadillac",
"Caterham",
"Chevrolet",
"Citroen",
"Dacia",
"Ferrari",
"Fiat",
"Ford",
"Honda",
"Infiniti",
"Isuzu",
"Iveco",
"Jaguar"
]
var modelo = [
"C-Max",
"Fiesta",
"Focus",
"Mondeo",
"Ka",
"S-MA",
" B-MAX",
"Grand C-Max",
"Tourneo Custom",
"Kuga",
"Galaxy",
"Grand Tourneo Connect",
"Tourneo Connect",
"EcoSport",
"Tourneo Courier",
"Mustang",
"Transit Connect",
"Edge",
"Ka+"
]
var anio = [
"1988",
"1989",
"1978",
"1989",
"1928",
"1989",
"1968",
"1989",
"1888",
"1989",
"1288",
"1989",
"1938",
"1989",
"1988",
"1999",
"1983",
"1989",
"1918"
]
function ConstructorAuto(marca, modelo, anio){
this.marca = marca;
this.modelo = modelo;
this.anio = anio}
for(var i = 0; marca.length > i && modelo.length > i && anio.length > i; i++){
var nuevoAuto = new ConstructorAuto(marca[i], modelo[i], anio[i]);
console.log(nuevoAuto)
}
// En este desafío vas a recibir un objeto car como parámetro de la función solution.
// Este objeto puede contener diferentes propiedades. Debes asegurarte de que tenga la propiedad licensePlate (la placa del auto). Si sí la tiene, devuelve el objeto original con la propiedad drivingLicense como true. Si no la tiene, devuelve el objeto original con la propiedad drivingLicense como false.
let car = {
color: 'red',
brand: 'Kia',
licensePlate: 'RGB255',
}
console.log(car);
console.log(car.licensePlate);
// function solution(car){
// if(car.licensePlate === undefined) {
// // Agregar la propiedad nueva:
// car.drivingLicense = false;
// }
// else {
// car.drivingLicense = true;
// }
// return car;
// }
// ó
function solution(car) {
car["licensePlate"] ?
car.drivingLicense = true
:car.drivingLicense = false
return car;
}
console.log(car);
console.log(solution(car));