SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
Electiva II
Clase 6
Objetos en JavaScript
Ing. José Ricardo Tillero UPTAEB
Objetos en JavaScript
Características
 Un objeto es como un array pero donde los índices los definimos nosotros.
 Para definir un objeto utilizamos las llaves { } ( object literal notation ).
 Los elementos de un objeto ( propiedades ) los separamos por comas:
> var hero = {
breed: 'Turtle',
occupation: 'Ninja'
};
 Las claves (keys, nombres de las propiedades) pueden ir entre comillas, pero no se recomienda.
 El par clave/valor (key/value) lo dividimos con 2 puntos:
> var o = {prop: 1};
> var o = {"prop": 1};
> var o = {'prop': 1};
 Cuando una propiedad contiene una función, decimos que esta propiedad es un método del objeto:
> var dog = {
name: 'Benji',
talk: function(){
alert('Woof, woof!');
}
};
Objetos en JavaScript
Características
 Hay 2 maneras de acceder a la propiedad de un objeto:
 Con la notación de corchetes: hero['occupation'].
 Con la notación de puntos: hero.occupation.
 Los objetos pueden contener otros objetos:
> var book = {
name: 'Catch-22',
published: 1961,
author: {
firstname: 'Joseph',
lastname: 'Heller'
}
};
> book.author.firstname
< "Joseph"
> book['author']['lastname']
< "Heller"
> book.author['lastname']
< "Heller"
> book['author'].lastname
< "Heller"
Objetos en JavaScript
Características
 Podemos definir un objeto vacío y luego añadirle (y quitarle) propiedades y métodos:
> var hero = {};
> typeof hero.breed
< "undefined"
> hero.breed = 'turtle';
> hero.name = 'Leonardo';
> hero.sayName = function() {return hero.name;};
> hero.sayName();
< "Leonardo"
> delete hero.name;
< true
> hero.sayName();
< reference to undefined property hero.name
 Cuando estamos dentro de un método, con this hacemos referencia al objeto al que pertenece (“this
object” ):
> var hero = {
name: 'Rafaelo',
sayName: function() {
return this.name;
}
}
> hero.sayName();
< "Rafaelo
Objetos en JavaScript
Funciones Constructoras
 Otra manera de crear objetos es mediante funciones constructoras.
 Para crear objetos con estas funciones hay que usar el operador new.
 La ventaja que tiene utilizar estas funciones constructoras es que aceptan parámetros al
crear objetos:
> function Hero(name) {
this.name = name;
this.occupation = 'Ninja';
this.whoAreYou = function() {
return "I'm " + this.name + " and I'm a " + this.occupation;
}
}
>
> var h1 = new Hero('Michelangelo');
> var h2 = new Hero('Donatello');
> h1.whoAreYou();
< "I'm Michelangelo and I'm a Ninja"
> h2.whoAreYou();
< "I'm Donatello and I'm a Ninja"
Objetos en JavaScript
Funciones Constructoras
 Todos los entornos cliente tienen un objeto global y todas las variables globales son propiedades de este objeto global.
En el navegador este objeto global se llama window. Por lo tanto, podemos acceder a una variable global “a”:
 Como una variable “a”.
 Como una propiedad del objeto global: window[‘a’] o window.a.
 Si declaramos una función constructora y la llamamos sin new:
 Devolverá undefined.
 Todas las propiedades declaradas con this se convertirán en propiedades de window.
> function Hero(name) {this.name = name;}
> var h = Hero('Leonardo');
> typeof h
< "undefined"
> typeof h.name
< h has no properties
>
> name
< "Leonardo"
> window.name
< "Leonardo"
<
> var h2 = new Hero('Michelangelo');
> typeof h2
< "object"
> h2.name
< "Michelangelo"
Objetos en JavaScript
Funciones Constructoras
 Hay maneras de evitar estos “accidentes” (llamar a un constructor sin new) como por ejemplo activar
strict mode (lanzaría una excepción en este caso).
 Cuando creamos un objeto, se le asigna siempre la propiedad constructor que contiene una referencia a
la función constructora utilizada para crear el objeto:
> h2.constructor
< Hero(name)
< 4
> var h3 = new h2.constructor('Rafaello');
> h3.name;
< "Rafaello"
< 8
> var o = {};
> o.constructor;
< Object()
> typeof o.constructor;
< "function“
 Con el operador instanceof podemos chequear si un objeto fue creado con una determinada función
constructora:
> function Hero(){}
> var h = new Hero();
> var o = {};
> h instanceof Hero;
< true
> h instanceof Object;
< false
> o instanceof Object;
< true
Objetos en JavaScript
Trabajando con Objetos
 Otra forma de crear un objeto, es a través de una función que nos devuelva un objeto.
> function factory(name) {
return {
name: name
};
}
> var o = factory('one');
> o.name
< "one"
> o.constructor
< Object()
 Podemos utilizar funciones constructoras y devolver objetos distintos de this.
> function C() { this.a = 1; }
> var c = new C();
> c.a
< 1
> function C2() { this.a = 1; return {b: 2}; }
> var c2 = new C2();
> typeof c2.a
< "undefined"
> c2.b
< 2
Objetos en JavaScript
Trabajando con Objetos
 Cuando copiamos un objeto o lo pasamos como parámetro a una función, realmente estamos pasando una referencia al
objeto. Si hacemos un cambio a esta referencia, modificaremos también el objeto original:
> var original = { howmany: 1 };
> var copy = original;
> copy.howmany
< 1
> copy.howmany = 100;
< 100
> original.howmany
< 100
>
> var nullify = function(o) { o.howmany = 0; }
> nullify(copy);
> original.howmany
< 0
 Cuando comparamos un objeto sólo obtendremos true si comparamos 2 referencias al mismo objeto
> var fido = { breed: 'dog' };
> var benji = { breed: 'dog' };
> benji === fido
< false
> benji == fido
< false
> var mydog = benji;
> mydog === benji
< true
> mydog === fido
< false

Weitere ähnliche Inhalte

Was ist angesagt?

Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
jorg_marq
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
testgrupocomex
 
ORM Doctrine
ORM DoctrineORM Doctrine
ORM Doctrine
Decharlas
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
Corfapo
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
jaircazarin
 
Clase6 collections
Clase6 collectionsClase6 collections
Clase6 collections
jorg_marq
 

Was ist angesagt? (19)

Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScript
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
 
Guia poo
Guia pooGuia poo
Guia poo
 
Jyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc java-cap03 bucles
Jyoc java-cap03 bucles
 
ORM Doctrine
ORM DoctrineORM Doctrine
ORM Doctrine
 
P1C5 Lenguaje de Expresiones
P1C5 Lenguaje de ExpresionesP1C5 Lenguaje de Expresiones
P1C5 Lenguaje de Expresiones
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
Clase6 collections
Clase6 collectionsClase6 collections
Clase6 collections
 

Ähnlich wie Clase 6 objetos de javaScript

OOP.JAVAS pjs
OOP.JAVAS pjsOOP.JAVAS pjs
OOP.JAVAS pjs
Jona Val
 
Object Oriented Javascript
Object Oriented JavascriptObject Oriented Javascript
Object Oriented Javascript
Gabriel Chertok
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Marcelino Ortiz
 
Tips componentes swing_v5
Tips componentes swing_v5Tips componentes swing_v5
Tips componentes swing_v5
ggzhack
 

Ähnlich wie Clase 6 objetos de javaScript (20)

Javascript objetos
Javascript objetosJavascript objetos
Javascript objetos
 
Javascript OOP
Javascript OOPJavascript OOP
Javascript OOP
 
OOP.JAVAS pjs
OOP.JAVAS pjsOOP.JAVAS pjs
OOP.JAVAS pjs
 
Jquery parte 1
Jquery parte 1Jquery parte 1
Jquery parte 1
 
Angularjs Lógica de negocio
Angularjs Lógica de negocioAngularjs Lógica de negocio
Angularjs Lógica de negocio
 
La propiedad prototype en la programación orientada a objetos con JavaScript
La propiedad prototype en la programación orientada a objetos con JavaScriptLa propiedad prototype en la programación orientada a objetos con JavaScript
La propiedad prototype en la programación orientada a objetos con JavaScript
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Manejo de los objetos en JavaScript para la programación orientada a objetos
Manejo de los objetos en JavaScript para la programación orientada a objetosManejo de los objetos en JavaScript para la programación orientada a objetos
Manejo de los objetos en JavaScript para la programación orientada a objetos
 
Object Oriented Javascript
Object Oriented JavascriptObject Oriented Javascript
Object Oriented Javascript
 
Las funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetosLas funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetos
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado Javascript
 
Html5 drag and drop
Html5 drag and dropHtml5 drag and drop
Html5 drag and drop
 
javascript.ppt
javascript.pptjavascript.ppt
javascript.ppt
 
Clase 12 jQuery basico
Clase 12  jQuery basicoClase 12  jQuery basico
Clase 12 jQuery basico
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
 
Tips componentes swing_v5
Tips componentes swing_v5Tips componentes swing_v5
Tips componentes swing_v5
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladores
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 

Mehr von José Ricardo Tillero Giménez

Mehr von José Ricardo Tillero Giménez (20)

PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
 
Guía Ejercicios SQL
Guía Ejercicios SQLGuía Ejercicios SQL
Guía Ejercicios SQL
 
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de DatosGuía 3 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios de Normalización de Base de Datos
 
Guía 1 Ejercicios MR
Guía 1 Ejercicios MRGuía 1 Ejercicios MR
Guía 1 Ejercicios MR
 
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de DatosGuía 2 Ejercicios de Normalización de Base de Datos
Guía 2 Ejercicios de Normalización de Base de Datos
 
Guía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER ExtendidoGuía 3 Ejercicios MER Extendido
Guía 3 Ejercicios MER Extendido
 
Guía 2 Ejercicios MER
Guía 2 Ejercicios MERGuía 2 Ejercicios MER
Guía 2 Ejercicios MER
 
Guía 1 Ejercicios MER
Guía 1 Ejercicios MERGuía 1 Ejercicios MER
Guía 1 Ejercicios MER
 
Plan de evaluación BD2021
Plan de evaluación BD2021Plan de evaluación BD2021
Plan de evaluación BD2021
 
Perfil Docente y Asesoría
Perfil Docente y AsesoríaPerfil Docente y Asesoría
Perfil Docente y Asesoría
 
Planificación BD2021
Planificación BD2021Planificación BD2021
Planificación BD2021
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
 
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES DE REDES AVANZADAS IIN4301
 
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2102
 
NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101NOTAS FINALES ELECTIVA II IN2101
NOTAS FINALES ELECTIVA II IN2101
 
Notas definitivas per base de datos
Notas definitivas per base de datosNotas definitivas per base de datos
Notas definitivas per base de datos
 
Clase 6 VLAN
Clase 6 VLANClase 6 VLAN
Clase 6 VLAN
 
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRPGuía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
 
Guía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteoGuía CISCO de redistribución de protocolos de ruteo
Guía CISCO de redistribución de protocolos de ruteo
 
Manual Basico de jQuery
Manual Basico de jQueryManual Basico de jQuery
Manual Basico de jQuery
 

Kürzlich hochgeladen

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Kürzlich hochgeladen (20)

Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdfFICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 

Clase 6 objetos de javaScript

  • 1. Electiva II Clase 6 Objetos en JavaScript Ing. José Ricardo Tillero UPTAEB
  • 2. Objetos en JavaScript Características  Un objeto es como un array pero donde los índices los definimos nosotros.  Para definir un objeto utilizamos las llaves { } ( object literal notation ).  Los elementos de un objeto ( propiedades ) los separamos por comas: > var hero = { breed: 'Turtle', occupation: 'Ninja' };  Las claves (keys, nombres de las propiedades) pueden ir entre comillas, pero no se recomienda.  El par clave/valor (key/value) lo dividimos con 2 puntos: > var o = {prop: 1}; > var o = {"prop": 1}; > var o = {'prop': 1};  Cuando una propiedad contiene una función, decimos que esta propiedad es un método del objeto: > var dog = { name: 'Benji', talk: function(){ alert('Woof, woof!'); } };
  • 3. Objetos en JavaScript Características  Hay 2 maneras de acceder a la propiedad de un objeto:  Con la notación de corchetes: hero['occupation'].  Con la notación de puntos: hero.occupation.  Los objetos pueden contener otros objetos: > var book = { name: 'Catch-22', published: 1961, author: { firstname: 'Joseph', lastname: 'Heller' } }; > book.author.firstname < "Joseph" > book['author']['lastname'] < "Heller" > book.author['lastname'] < "Heller" > book['author'].lastname < "Heller"
  • 4. Objetos en JavaScript Características  Podemos definir un objeto vacío y luego añadirle (y quitarle) propiedades y métodos: > var hero = {}; > typeof hero.breed < "undefined" > hero.breed = 'turtle'; > hero.name = 'Leonardo'; > hero.sayName = function() {return hero.name;}; > hero.sayName(); < "Leonardo" > delete hero.name; < true > hero.sayName(); < reference to undefined property hero.name  Cuando estamos dentro de un método, con this hacemos referencia al objeto al que pertenece (“this object” ): > var hero = { name: 'Rafaelo', sayName: function() { return this.name; } } > hero.sayName(); < "Rafaelo
  • 5. Objetos en JavaScript Funciones Constructoras  Otra manera de crear objetos es mediante funciones constructoras.  Para crear objetos con estas funciones hay que usar el operador new.  La ventaja que tiene utilizar estas funciones constructoras es que aceptan parámetros al crear objetos: > function Hero(name) { this.name = name; this.occupation = 'Ninja'; this.whoAreYou = function() { return "I'm " + this.name + " and I'm a " + this.occupation; } } > > var h1 = new Hero('Michelangelo'); > var h2 = new Hero('Donatello'); > h1.whoAreYou(); < "I'm Michelangelo and I'm a Ninja" > h2.whoAreYou(); < "I'm Donatello and I'm a Ninja"
  • 6. Objetos en JavaScript Funciones Constructoras  Todos los entornos cliente tienen un objeto global y todas las variables globales son propiedades de este objeto global. En el navegador este objeto global se llama window. Por lo tanto, podemos acceder a una variable global “a”:  Como una variable “a”.  Como una propiedad del objeto global: window[‘a’] o window.a.  Si declaramos una función constructora y la llamamos sin new:  Devolverá undefined.  Todas las propiedades declaradas con this se convertirán en propiedades de window. > function Hero(name) {this.name = name;} > var h = Hero('Leonardo'); > typeof h < "undefined" > typeof h.name < h has no properties > > name < "Leonardo" > window.name < "Leonardo" < > var h2 = new Hero('Michelangelo'); > typeof h2 < "object" > h2.name < "Michelangelo"
  • 7. Objetos en JavaScript Funciones Constructoras  Hay maneras de evitar estos “accidentes” (llamar a un constructor sin new) como por ejemplo activar strict mode (lanzaría una excepción en este caso).  Cuando creamos un objeto, se le asigna siempre la propiedad constructor que contiene una referencia a la función constructora utilizada para crear el objeto: > h2.constructor < Hero(name) < 4 > var h3 = new h2.constructor('Rafaello'); > h3.name; < "Rafaello" < 8 > var o = {}; > o.constructor; < Object() > typeof o.constructor; < "function“  Con el operador instanceof podemos chequear si un objeto fue creado con una determinada función constructora: > function Hero(){} > var h = new Hero(); > var o = {}; > h instanceof Hero; < true > h instanceof Object; < false > o instanceof Object; < true
  • 8. Objetos en JavaScript Trabajando con Objetos  Otra forma de crear un objeto, es a través de una función que nos devuelva un objeto. > function factory(name) { return { name: name }; } > var o = factory('one'); > o.name < "one" > o.constructor < Object()  Podemos utilizar funciones constructoras y devolver objetos distintos de this. > function C() { this.a = 1; } > var c = new C(); > c.a < 1 > function C2() { this.a = 1; return {b: 2}; } > var c2 = new C2(); > typeof c2.a < "undefined" > c2.b < 2
  • 9. Objetos en JavaScript Trabajando con Objetos  Cuando copiamos un objeto o lo pasamos como parámetro a una función, realmente estamos pasando una referencia al objeto. Si hacemos un cambio a esta referencia, modificaremos también el objeto original: > var original = { howmany: 1 }; > var copy = original; > copy.howmany < 1 > copy.howmany = 100; < 100 > original.howmany < 100 > > var nullify = function(o) { o.howmany = 0; } > nullify(copy); > original.howmany < 0  Cuando comparamos un objeto sólo obtendremos true si comparamos 2 referencias al mismo objeto > var fido = { breed: 'dog' }; > var benji = { breed: 'dog' }; > benji === fido < false > benji == fido < false > var mydog = benji; > mydog === benji < true > mydog === fido < false