CoffeeScript - Objetos

Los objetos de CoffeeScript son similares a los de JavaScript. Se trata de una colección de propiedades, donde una propiedad incluye una clave y un valor separados por un punto y coma (:). En resumen, los objetos CoffeeScript son una colección de pares clave-valor. Los objetos se definen mediante llaves, un objeto vacío se representa como{}.

Sintaxis

A continuación se muestra la sintaxis de un objeto en CoffeeScript. Aquí, colocamos los pares clave-valor de los objetos dentro de las llaves y se separan mediante comas (,).

object ={key1: value, key2: value,......keyN: value}

Ejemplo

A continuación se muestra un ejemplo de cómo definir un objeto en CoffeeScript. Guarde este código en un archivo con nombreobjects_example.coffee

student = {name: "Mohammed", age: 24, phone: 9848022338 }

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

> coffee -c objects_example.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var student;

  student = {
    name: "Mohammed",
    age: 24,
    phone: 9848022338
  };

}).call(this);

Al igual que en las matrices, podemos eliminar las comas especificando los pares clave-valor en nuevas líneas como se muestra a continuación.

student = {
  name: "Mohammed" 
  age: 24
  phone: 9848022338 
  }

Sangrías en lugar de llaves

Al igual que otras declaraciones de bloque en CoffeeScript, podemos usar sangrías en lugar de llaves {} como se muestra en el siguiente ejemplo.

Ejemplo

Podemos reescribir el ejemplo anterior sin llaves como se muestra a continuación.

student = 
  name: "Mohammed" 
  age: 24
  phone: 9848022338

Objetos anidados

En CoffeeScript, podemos escribir objetos dentro de objetos.

Ejemplo

El siguiente ejemplo muestra los objetos anidados en CoffeeScript. Guarde este código en un archivo con nombrenested_objects.coffee

contact =
  personal:
    email: "[email protected]"
    phone:  9848022338
  professional:
    email: "[email protected]"
    phone:  9848033228

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

> coffee -c nested_objects.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var contact;

  contact = {
    personal: {
      email: "[email protected]",
      phone: 9848022338
    },
    professional: {
      email: "[email protected]",
      phone: 9848033228
    }
  };

}).call(this);

Comprensiones sobre objetos

Para iterar sobre el contenido de un objeto, podemos usar comprensiones. Iterar el contenido de un objeto es lo mismo que iterar el contenido de una matriz. En los objetos, dado que tenemos que recuperar dos claves de elementos y valores, usaremos dos variables.

Ejemplo

El siguiente es un ejemplo que muestra cómo iterar el contenido de un objeto usando comprensiones. Guarde este código en un archivo con nombreobject_comprehensions.coffee

student = 
  name: "Mohammed" 
  age: 24
  phone: 9848022338 

console.log key+"::"+value for key,value of student

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

> coffee -c object_comprehensions.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var key, student, value;

  student = {
    name: "Mohammed",
    age: 24,
    phone: 9848022338
  };

  for (key in student) {
    value = student[key];
    console.log(key(+"::" + value));
  }

}).call(this);

Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.

> coffee object_comprehensions.coffee

Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.

name::Mohammed
age::24
phone::9848022338

Matrices de objetos

En CoffeeScript, una matriz también puede contener objetos como se muestra a continuación.

a = [
     object1_key1: value
     object1_key2: value
     object1_key3: value
  ,
     object2_key1: value
     object2_key2: value
     object2_key3: value
]

El siguiente ejemplo muestra cómo definir una matriz de objetos. Podemos simplemente enumerar los pares clave-valor de los objetos que queremos en una matriz separándolos con comas(,).

students =[  
    name: "Mohammed" 
    age: 24
    phone: 9848022338 
  ,  
    name: "Ram" 
    age: 25
    phone: 9800000000 
  ,  
    name: "Ram" 
    age: 25
    phone: 9800000000   
 ]  
console.log student for student in students

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

c:\> coffee -c array_of_objects.coffee

Al compilar, le da el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var i, len, student, students;

  students = [
    {
      name: "Mohammed",
      age: 24,
      phone: 9848022338
    }, {
      name: "Ram",
      age: 25,
      phone: 9800000000
    }, {
      name: "Ram",
      age: 25,
      phone: 9800000000
    }
  ];

  for (i = 0, len = students.length; i < len; i++) {
    student = students[i];
    console.log(student);
  }

}).call(this);

Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.

c:\> coffee array_of_objects.coffee

Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.

{ name: 'Mohammed', age: 24, phone: 9848022338 }
{ name: 'Ram', age: 25, phone: 9800000000 }
{ name: 'Ram', age: 25, phone: 9800000000 }

Palabras clave reservadas

JavaScript no permite palabras clave reservadas como nombres de propiedad de un objeto, si queremos usarlas, tenemos que envolverlas usando comillas dobles. " ".

Ejemplo

Considere el siguiente ejemplo. Aquí hemos creado una propiedad con nombreclass, que es una palabra clave reservada. Guarde este código en un archivo con nombrereserved_keywords.coffee

student ={ 
  name: "Mohammed" 
  age: 24
  phone: 9848022338
  class: "X"
  }
console.log key+"::"+value for key,value of student

Abre el command prompt y compile el archivo .coffee como se muestra a continuación.

c:\> coffee -c reserved_keywords.coffee

Al compilar, le da el siguiente JavaScript. Aquí puede observar que el compilador CoffeeScript envolvió la clase de palabras clave con comillas dobles en nuestro nombre.

// Generated by CoffeeScript 1.10.0
(function() {
  var key, student, value;

  student = {
    name: "Mohammed",
    age: 24,
    phone: 9848022338,
    "class": "X"
  };

  for (key in student) {
    value = student[key];
    console.log(key + "::" + value);
  }

}).call(this);

Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.

c:\> coffee array_of_objects.coffee

Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.

name::Mohammed
age::24
phone::9848022338
class::X