Upload
daniel-g
View
243
Download
9
Embed Size (px)
DESCRIPTION
Javascript Objects
Citation preview
JavaScript
Objetos
Objetos
Un objeto es una colección de nombre/valor.
Es un tipo de datos compuesto.
Difiere de los tipos de datos primitivos: String, number, boolean.
Junto con Arrays constituyen los 2 tipos de datos más importantes en JavaScript.
Objetos
Tipo de dato compuesto que almacena múltiples valores en una única unidad y que nos permite accederla por nombre para extraer o almacenar datos.
Crear Objetos
• Literalmente: lista de pares ‘nombre’:’valor’ separados por comas y delimitados por llaves {}
– var empty = {};
– var coordenada = { x:0, y:0};
– var circulo = { x:punto.x, y:punto.y, radio:2 };
– var profesor = {‘nombre’ : ‘Daniel’,‘cursos’: arreglo_cursos,‘email’: ‘[email protected]’
};
Crear Objetos• Operador new
El operador new crea tipo de objetos especiales.
var fecha = new Date();
var arreglo = new Array();
var regexp = new RegExp(“javascript”,”i”);
var rectan = new Rectangulo(20,40);
Propiedades
• Para acceder a los pares de ‘nombre’:’valor’ de los Objetos se utiliza el operador punto .
objeto_nombre.valor_nombre;objeto_nombre = propiedad
Propiedades
var libro = {};
libro.titulo = ‘El Quijote de La Mancha’;
libro.autor = ‘Miguel de Cervantes Saavedra’;
libro.paginas = 1096;
libro.capitulos = new Array();
libro.capitulos[0] = new Object();
libro.capitulos[0].titulo = ‘Que trata de la….’;
libro.capitulos[0].paginas = 5;
Propiedades
• var para declarar el objeto
• Propiedades solo con el nombre
• new propiedades objetos
• var no se usa en las propiedades
• Se pueden agregar nuevas propiedades en todo
momento.
• Se pueden eliminar propiedades en todo momento.
Propiedades
• Enumerar/listar propiedades de un objeto:
function DisplayPropertiesName(obj) {for (var name in obj) {
console.log(‘obj.’ + name);}
}
Propiedades<!DOCTYPE html>
<html>
<head>
<meta charset= “utf-8”</meta>
<title>Objetos</title>
<script language="javascript">
var libro = {};
libro.titulo = 'El Quijote de La Mancha';
libro.autor = 'Miguel de Cervantes Saavedra';
libro.paginas = 1096;
libro.capitulos = new Array();
libro.capitulos[0] = new Object();
libro.capitulos[0].titulo = 'Que trata de la...';
libro.capitulos[0].paginas = 5;
function DisplayPropertiesName() {
for (var name in libro) {
console.log('obj.' + name);
}
}
</script>
</head>
<body onload="DisplayPropertiesName()">
</body>
</html>
Propiedades
• Chequear si existe una propiedad:
if (“x” in objeto) …
objeto.x !== undefined
Nota: “x” literal x
Propiedades
• Eliminar una propiedad de un objeto:
delete libro.paginas;
Objetos: Arreglos Asociativos
En lenguales fuertemente tipados (C/C++, Java),los objetos tienen un número fijo de propiedades cuyos nombres son definidoscuando se programa.
profesor.nombre;profesor.curso;
Nombre y curso deben estar definidas en el programa literalmente.
Objetos: Arreglos Asociativos
• Para acceder a las propiedades de un objeto se utiliza el operador punto:– objeto.propiedad // identificador
• O puedo utilizarse el operador [] como en arreglos:– objeto[‘propiedad’] // string
Ambas expresiones son equivalentes.
Objetos: Arreglos Asociativos
• El operador “.” accede a una propiedad del objeto cuyo nombre es un identificador.
• Los identificadores son literales tipeados en un programa JS.
• No son variables de un tipo de datos en JS.• Los literales deben conocerse de antemano.
Objetos: Arreglos Asociativos
• El operador “[]” accede a una propiedad de un arreglo que esta expresada como una cadena.
• La cadena es una variable tipo string. Un tipo de datos en JS.
• Puede manipularse perfectamente en un programa JS.
• Puede cambiarse dinámicamente en la ejecución del programa JS:
Objetos: Arreglos Asociativos
JavaScript no es fuertemente tipado y por lo tanto no se requiere que las propiedades de un objeto estén definidas de antemano, uno puede crearlas/definirlas en runtime, o sea,
mientras se ejecuta el script.
Cómo? Utilizando la notación de Objetos como Arreglos Asociativos
Objetos: Arreglos Asociativos
Conclusión:
puedo definir dinámicamente propiedades para los objetos si utilizo el operador “[]”.
Objetos: Arreglos Asociativosvar nombre_accion = leer_nombre_accion();
var cant_accion = leer_cant_accion();
mis_acciones[nombre_accion] = cant_accion;
var valores = 0;
for (accion in mis_acciones) {
valores += valor_accion(accion) * mis_acciones[accion];
}
Class: Object
• Los objetos JS heredan de la Clase Object.
• RegExp y Date definen sus propios métodos y propiedades.
• Universalmente, todos soportan las propiedades y métodos de Object.
Constructor
• Propiedad• Todo objeto JS tiene un constructor.• Función que crea al objeto.
var d = new Date();d.constructor == Date; // true
Constructor
• La propiedad constructor de un objeto ayuda a determinar el tipo de objeto.
if (( typeof o == “object”) && ( o.constructor == Date))
if (( typeof o == “object”) && ( o instaceof Date))
Clases, Constructores, Prototipos
• Definiendo Clases propias:
function Rectangulo(w, h) {
this.ancho = w;
this.alto = h;
}
rect1 = new Rectangulo(10,20); // rect1 = {width:10, height:20}
- rect1 es un objeto de clase Rectangulo.- function Rectangulo es el constructor .- Las funciones constructor no devuelven un valor.
Clases, Constructores, Prototipos
• this hace referencia al objeto en sí mismo, al objeto actual.