JavaScript: Objetos ( Curso JavaScript )



1. Historia


Javascript apareció por primera vez al público como parte del explorador Netscape Navigator 2.0 en 1996. Y luego, al año siguiente, fue estandarizado por ECMA International llamándolo ECMAScript.

Lo que conocemos como JavaScript hoy en día es una implementación de la especificación de lenguaje ECMAScript, de la cual cambien derivan lenguajes como ActionScript, JScript, TypeScript, etc.
La especificación de ECMAScript cambia con el tiempo, introduciendo soluciones a viejos problemas y soporte para nuevas tecnologías.

Javascript es un lenguaje de scripting y a la vez orientado a objetos, que aunque su nombre incluye “Java” no tiene nada o poco que ver con el lenguaje Java, de hecho, inicialmente iba a llamarse LifeScript, pero tras los acuerdos entre Sun Microsystems y Netscape decidieron llamarlo JavaScript para mercadearlo como un complemento de scripting del lenguaje Java.

A pesar de que inicialmente fue pensado como un lenguaje de scripting para exploradores hoy podemos ver JavaScript del lado del servidor con Node.js

2. Objetos


El enfoque orientado a objetos de JavaScript es un poco diferente al que podemos ver en otros lenguajes que implementan el paradigma.

Existen tres maneras de hacer una instancia de un objeto en javascript:
• La forma literal: var x = {};. Con esto creamos un objeto vacío.
• Utilizando el operador new: var x = new Object();.
• Utilizando la función create: baz = Object.create(null);.

A continuación les explicaré las diferencias de crear objetos con estas tres formas diferentes.

3. Objetos Literales


La forma literal es permite describir objetos de manera clara y compacta. Puedes describir objetos entre llaves con propiedades separadas por comas. Esta forma no es invocada explícitamente, es solo un atajo para usar el método Object.create().
var autor = {
    nombre: 'Nelson'
};
var autor2 = Object.create(Object.prototype, {
    bar: {
        nombre: 'Nelson'
} });
 
console.log(autor.bar); // -> Nelson
 
console.log(autor2.bar); // -> Nelson

Por ser tan simple la forma literal es que el constructor del objeto no puede ser redefinido, de modo que no se puede definir un objeto cuyo prototipo sea diferente al por defecto. Ya explicaré lo que es el prototipo más adelante.

4. Objetos Con Operador New


El operador new crea una instancia de un objeto. Este acepta un constructor y una serie de argumentos opcionales.
var Autor = function (nombre) {
    this.nombre = nombre;
};
 
var sinNombre = new Autor();
var nelson = new Autor('Nelson');

Veamos lo que hace este operador (new):
1. Se crea el objeto nuevo.
2. Se conecta el constructor del nuevo objeto a la función Autor.
3. Se conecta el prototipo del objeto Object con Autor.prototype.
4. Se asigna cualquier argumento pasado a la función al objeto creado.
Nota 
Este enfoque le da al lenguaje un estilo de clases que confunde a mucha gente, porque realmente no existen las clases en Javascript como las conocemos en otros lenguajes como Java, C#, Objective-C. En Javascript hay solo objetos que pueden ser extendidos.

5. Extendiendo Objetos


JavaScript es un lenguaje muy flexible. Permite agregar funciones y propiedades a objetos de manera dinámica sin mucho esfuerzo.
var Autor = function (nombre) {
  this.nombre = nombre;
};
 
// Creando un nuevo Autor
var autor = new Autor('Nelson');
 
// Agregando atributo nuevo
autor.lastname = 'Molina';
 
// Agregando una función nueva
autor.fullName = function () {
  return this.nombre + ' ' + this.lastname;
};
 
console.log(autor.fullName ()); // -> "Nelson Molina"

6. Prototipos


Los prototipos permiten conectar entre si a los objetos. JavaScript usa una cadena de prototipos, de manera que, cuando intentas hacer una referencia una propiedad, se viaja a través de la cadena hasta alcanzar la en la conexión correcta. Se puede acceder al prototipo de un objeto de la siguiente manera:

1. Person.prototype define el prototipo para un objeto instanciado con el operador new.
2. Object.getPrototypeOf(autor) retorna el prototipo de un objeto.
var Autor = function (nombre) {
 
  this.nombre = nombre;
};
 
var nelson  = new Autor('Nelson');
var jose = new Autor('Jose');
 
// Definiendo una función por el prototipo afecta todas las instancias de un objeto
Person.prototype.introducir= function() {
  return 'Hola, mi nombre es ' + this.name;
};
 
console.log(nelson.introducir());
console.log(jose .introducir());
 
// Definir una función con el mismo nombre solo afecta al objeto localmente
nelson.introduce = function() {
  return 'Hola, mi nombre alreves es ' + this.name.split("").reverse().join("");
};
 
console.log(nelson.introducir());
console.log(jose .introducir());
 
// no afecta porque las propiedades locales tienen preferencia
Autor.prototype.name = 'Manuel';
 
console.log(nelson.introducir());
console.log(jose.introducir());

7. Propiedades Y Métodos Privados


En ejemplos anteriores hemos visto como se crean propiedades y métodos públicos. Veamos ahora los privados.
var Autor = function (nombre) {
 
  // propiedad pública
  this.nombre= nombre;
 
  // propiedad privada
  var apellido = 'Escobar';
 
  // propiedad privada
  var myName = this.nombre;
 
  // método privado
  var fullName = function () {
    return myName + ' ' + lastname;
  }
 
  // método público
  this.introducir = function() {
    return 'Hola, mi nombre es ' + fullName();
  };
 
};
 
var autor = new Autor('JuanDiego');
 
console.log(autor.name); // -> "Nelson"
console.log(autor.introducir ());// -> "Hola, mi nombre es Juan Diego Escobar"
console.log(autor.lastname); // -> undefined
console.log(autor.fullName()); // Error: -> "Object [object Object] has no method 'fullName'"


Conclusión

En este tutorial he presentado los fundamentos de los objetos en JavaScript. Por supuesto que todavía se puede decir mucho más sobre el tema, pero pasaríamos días hablando. Con esto es mas que suficiente para estar, como dicen, “up and running” con el paradigma POO en JavaScript.

Dudas o comentarios pueden ser dejados en la sección correspondiente más abajo.

Si te ha gustado esta publicación, ayudamos compartiéndola en tus redes sociales favoritas.

Comentarios

Entradas populares de este blog

Kali Linux Guia Español (Mega)(Pdf)

MEGA PAQUETE CON MAS DE 60 CURSOS DE VIDEO2BRAIN

Curso Certified Ethical Hacker. Seguridad, Penetración, Proteccion Pdf Mega