CoffeeScript - Objetos
Os objetos em CoffeeScript são semelhantes aos de JavaScript. Estes são uma coleção de propriedades, onde uma propriedade inclui uma chave e um valor separados por ponto e vírgula (:) Resumindo, os objetos CoffeeScript são uma coleção de pares de valores-chave. Os objetos são definidos usando chaves, um objeto vazio é representado como{}.
Sintaxe
A seguir, está a sintaxe de um objeto em CoffeeScript. Aqui, colocamos os pares de valores-chave dos objetos entre chaves e eles são separados por vírgula (,)
object ={key1: value, key2: value,......keyN: value}
Exemplo
A seguir está um exemplo de definição de um objeto em CoffeeScript. Salve este código em um arquivo com o nomeobjects_example.coffee
student = {name: "Mohammed", age: 24, phone: 9848022338 }
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
> coffee -c objects_example.coffee
Na compilação, ele fornece o seguinte JavaScript.
// Generated by CoffeeScript 1.10.0
(function() {
var student;
student = {
name: "Mohammed",
age: 24,
phone: 9848022338
};
}).call(this);
Assim como nas matrizes, podemos remover as vírgulas especificando os pares de valores-chave em novas linhas, conforme mostrado abaixo.
student = {
name: "Mohammed"
age: 24
phone: 9848022338
}
Recuos em vez de chaves
Assim como outras instruções de bloco no CoffeeScript, podemos usar recuos em vez de chaves {} conforme mostrado no exemplo a seguir.
Exemplo
Podemos reescrever o exemplo acima sem as chaves, como mostrado abaixo.
student =
name: "Mohammed"
age: 24
phone: 9848022338
Objetos aninhados
No CoffeeScript, podemos escrever objetos dentro de objetos.
Exemplo
O exemplo a seguir demonstra os objetos aninhados em CoffeeScript. Salve este código em um arquivo com o nomenested_objects.coffee
contact =
personal:
email: "[email protected]"
phone: 9848022338
professional:
email: "[email protected]"
phone: 9848033228
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
> coffee -c nested_objects.coffee
Na compilação, ele fornece o seguinte 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);
Compreensões sobre objetos
Para iterar o conteúdo de um objeto, podemos usar compreensões. Iterar o conteúdo de um objeto é o mesmo que iterar o conteúdo de uma matriz. Em objetos, como temos que recuperar duas chaves e valores de elementos, usaremos duas variáveis.
Exemplo
A seguir está um exemplo que mostra como iterar o conteúdo de um objeto usando compreensões. Salve este código em um arquivo com o nomeobject_comprehensions.coffee
student =
name: "Mohammed"
age: 24
phone: 9848022338
console.log key+"::"+value for key,value of student
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
> coffee -c object_comprehensions.coffee
Na compilação, ele fornece o seguinte 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
> coffee object_comprehensions.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.
name::Mohammed
age::24
phone::9848022338
Matrizes de objetos
No CoffeeScript, uma matriz também pode conter objetos conforme mostrado abaixo.
a = [
object1_key1: value
object1_key2: value
object1_key3: value
,
object2_key1: value
object2_key2: value
object2_key3: value
]
O exemplo a seguir mostra como definir uma matriz de objetos. Podemos apenas listar os pares de valores-chave dos objetos que queremos em uma matriz, separando-os com vírgulas(,).
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
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c array_of_objects.coffee
Na compilação, ele fornece o seguinte 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee array_of_objects.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.
{ name: 'Mohammed', age: 24, phone: 9848022338 }
{ name: 'Ram', age: 25, phone: 9800000000 }
{ name: 'Ram', age: 25, phone: 9800000000 }
Palavras-chave reservadas
JavaScript não permite palavras-chave reservadas como nomes de propriedade de um objeto, se quisermos usá-las, temos que colocá-las entre aspas duplas " ".
Exemplo
Considere o seguinte exemplo. Aqui nós criamos uma propriedade com o nomeclass, que é uma palavra-chave reservada. Salve este código em um arquivo com o nomereserved_keywords.coffee
student ={
name: "Mohammed"
age: 24
phone: 9848022338
class: "X"
}
console.log key+"::"+value for key,value of student
Abra o command prompt e compilar o arquivo .coffee conforme mostrado abaixo.
c:\> coffee -c reserved_keywords.coffee
Na compilação, ele fornece o seguinte JavaScript. Aqui você pode observar que o compilador CoffeeScript envolveu a classe de palavra-chave com aspas duplas em nosso nome.
// 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);
Agora, abra o command prompt novamente e execute o arquivo CoffeeScript conforme mostrado abaixo.
c:\> coffee array_of_objects.coffee
Ao ser executado, o arquivo CoffeeScript produz a seguinte saída.
name::Mohammed
age::24
phone::9848022338
class::X