对象(Objects)
CoffeeScript中的对象与JavaScript中的对象类似。 这些是属性的集合,其中属性包括键和由分号(:)分隔的值。 简而言之,CoffeeScript对象是键值对的集合。 使用花括号定义对象,将空对象表示为{} 。
语法 (Syntax)
下面给出了CoffeeScript中对象的语法。 在这里,我们将对象的键值对放在花括号中,并使用逗号( , )分隔它们。
object ={key1: value, key2: value,......keyN: value}
例子 (Example)
以下是在CoffeeScript中定义对象的示例。 将此代码保存在名为objects_example.coffee的文件中
student = {name: "Mohammed", age: 24, phone: 9848022338 }
打开command prompt并编译.coffee文件,如下所示。
> coffee -c objects_example.coffee
在编译时,它为您提供以下JavaScript。
// Generated by CoffeeScript 1.10.0
(function() {
var student;
student = {
name: "Mohammed",
age: 24,
phone: 9848022338
};
}).call(this);
就像在数组中一样,我们可以通过在新行中指定键值对来删除逗号,如下所示。
student = {
name: "Mohammed"
age: 24
phone: 9848022338
}
缩进而不是花括号
就像CoffeeScript中的其他块语句一样,我们可以使用缩进而不是花括号{} ,如以下示例所示。
例子 (Example)
我们可以在没有花括号的情况下重写上面的例子,如下所示。
student =
name: "Mohammed"
age: 24
phone: 9848022338
嵌套对象
在CoffeeScript中,我们可以在对象中编写对象。
例子 (Example)
以下示例演示CoffeeScript中的嵌套对象。 将此代码保存在名为nested_objects.coffee的文件中
contact =
personal:
email: "personal@gmail.com"
phone: 9848022338
professional:
email: "professional@gmail.com"
phone: 9848033228
打开command prompt并编译.coffee文件,如下所示。
> coffee -c nested_objects.coffee
在编译时,它为您提供以下JavaScript。
// Generated by CoffeeScript 1.10.0
(function() {
var contact;
contact = {
personal: {
email: "personal@gmail.com",
phone: 9848022338
},
professional: {
email: "professional@gmail.com",
phone: 9848033228
}
};
}).call(this);
对对象的理解
要迭代对象的内容,我们可以使用理解。 迭代对象的内容与迭代数组的内容相同。 在对象中,由于我们必须检索两个元素键和值,因此我们将使用两个变量。
例子 (Example)
以下是一个示例,说明如何使用理解来迭代对象的内容。 将此代码保存在名为object_comprehensions.coffee的文件中
student =
name: "Mohammed"
age: 24
phone: 9848022338
console.log key+"::"+value for key,value of student
打开command prompt并编译.coffee文件,如下所示。
> coffee -c object_comprehensions.coffee
在编译时,它为您提供以下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);
现在,再次打开command prompt并运行CoffeeScript文件,如下所示。
> coffee object_comprehensions.coffee
执行时,CoffeeScript文件生成以下输出。
name::Mohammed
age::24
phone::9848022338
对象数组
在CoffeeScript中,数组也可以包含对象,如下所示。
a = [
object1_key1: value
object1_key2: value
object1_key3: value
,
object2_key1: value
object2_key2: value
object2_key3: value
]
以下示例显示如何定义对象数组。 我们可以通过使用逗号(,)分隔它们来列出我们想要在数组中的对象的键值对。
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
打开command prompt并编译.coffee文件,如下所示。
c:\> coffee -c array_of_objects.coffee
在编译时,它为您提供以下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);
现在,再次打开command prompt并运行CoffeeScript文件,如下所示。
c:\> coffee array_of_objects.coffee
执行时,CoffeeScript文件生成以下输出。
{ name: 'Mohammed', age: 24, phone: 9848022338 }
{ name: 'Ram', age: 25, phone: 9800000000 }
{ name: 'Ram', age: 25, phone: 9800000000 }
保留关键字
JavaScript不允许保留关键字作为对象的属性名称,如果我们想要使用它们,我们必须使用双引号" "来包装它们。
例子 (Example)
请考虑以下示例。 这里我们创建了一个名为class的属性,它是一个保留关键字。 将此代码保存在名为reserved_keywords.coffee的文件中
student ={
name: "Mohammed"
age: 24
phone: 9848022338
class: "X"
}
console.log key+"::"+value for key,value of student
打开command prompt并编译.coffee文件,如下所示。
c:\> coffee -c reserved_keywords.coffee
在编译时,它为您提供以下JavaScript。 在这里,您可以观察到CoffeeScript编译器代表我们用双引号包装了关键字类。
// Generated by CoffeeScript 1.10.0
(function() {
var key, student, value;
student = {
name: "Mohammed",
age: 24,
phone: 9848022338,
<b>"class": "X"</b>
};
for (key in student) {
value = student[key];
console.log(key + "::" + value);
}
}).call(this);
现在,再次打开command prompt并运行CoffeeScript文件,如下所示。
c:\> coffee array_of_objects.coffee
执行时,CoffeeScript文件生成以下输出。
name::Mohammed
age::24
phone::9848022338
class::X