Objetos en JavaScript

Author
Por Darío Rivera
Publicado el en Javascript

JavaScript está diseñado mediante un paradigma simple basado en objetos. Estos objetos contienen un conjunto de propiedades mediante asociaciones clave-valor que pueden representar objetos del mundo real. Si eres nuevo en este paradigma puedes leer nuestro artículo Introducción a la Programacion Orientada a Objetos.

Inicializacion de objetos

Para crear e inicializar un objeto podemos utilizar el objeto Object.

const myCar = new Object();
myCar.make = 'Ford';
myCar.model = 'Mustang';
myCar.year = 1969;

Para definir cada propiedad se utiliza la notación de punto (myCar.make), al igual que para acceder a ellas con el nombre del objeto. También es posible utilizar la sintáxis de inicialización de objeto así:

const myCar = {
  make: 'Ford',
  model: 'Mustang',
  year: 1969
};

Los objetos son llamados a veces también arrays asociativos ya que es posible acceder a las propiedades como si fuera un array clave-valor.

myCar.make;  // Ford
myCar["make"];  // Ford

Un hecho bastante curioso sobre la creación de propiedades en objetos, es que a pesar de que no se pueda crear una key con caracteres especiales puedes de igual manera hacerlo tratándolos como listas o arrays. El siguiente código arrojaría el error Uncaught SyntaxError: Unexpected token '-'.

const obj = {
    first-name: 'Steave'
}

Sin embargo puedes utilizar el siguiente hack.

const obj = {};
obj['first-name'] = 'Steave'

O bien

const obj = {
  'first-name': 'Steave'
};

Función constructora

De manera alternativa también es posible crear un objeto utilizando una función constructora.

let Person = function(firstName, lastName) {
    this.firstName = firstName
    this.lastName = lastName
}

// otra forma de hacerlo es esta
function Person(firstName, lastName) {
    this.firstName = firstName
    this.lastName = lastName
}

De esta forma podría utilizar el operador new y pasar los argumentos en el "constructor".

let person = new Person('Steave', 'Jobs')
person.firstName;   // Steave

Esta forma de crear objetos es tal vez mucho más familiar a la programación orientada a objetos de la mayoría de languajes. Esto se trata mucho más a fondo en nuestro artículo Clases en JavaScript.

Object.create

Otra forma de crear un objeto consiste en utilizar Object.create. Este método es bastante útil ya que permite definir el prototipo desde el cual será creado el objeto.

const Animal = {
  type: 'Invertebrates', // Default value of properties
  displayType() {  // Method which will display type of Animal
    console.log(this.type);
  }
};

// Create new animal type called animal1
const animal1 = Object.create(Animal);
animal1.displayType(); // Output: Invertebrates

Enumerabilidad

Una propiedad es enumerable cuando se puede recorrer. Las propiedades asignadas mediante notación de punto o mediante la inicialización de objeto son automáticamente enumerables. Sin embargo, propiedades definidas con Object.defineProperty no lo son.

let car = {};
car.make = 'Ford';
car.model = 2000;
Object.defineProperty(car, 'DEPRECATED', {value: true, writable: false});

for (item in car) {
    console.log(`Item: ${car[item]}`)
}

El código anterior imprimirá:

Item: Ford
Item: 2000

Sin embargo podemos acceder a la propiedad no enumerable mediante la notación de punto.

car.DEPRECATED;   // true

Tanto el valor como la key de la propiedad no es iterable. Observa que obtenemos con Object.keys.

Object.keys(car);  // ['make', 'model']

Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.