Coffeescript 简明教程
CoffeeScript - 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
}
Nested objects
在 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);
Comprehensions over objects
我们可以使用列表解析来遍历对象的元素。遍历对象元素与遍历数组元素相同。在对象中,我们需要检索 key 和值这两个元素,因此我们会使用两个变量。
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
Arrays of Objects
在 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 }
Reserved Keywords
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 编译器已代表我们使用双引号包装了关键字 class。
// 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);
现在,再次打开 command prompt 并按照以下所示运行 CoffeeScript 文件。
c:\> coffee array_of_objects.coffee
执行后,CoffeeScript 文件产生以下输出。
name::Mohammed
age::24
phone::9848022338
class::X