开发手册 欢迎您!
软件开发者资料库

CoffeeScript - 对象

CoffeeScript对象 - 从概述,环境,命令行实用程序,语法,数据类型,变量,运算符和别名,条件,循环,理解,函数,字符串,数组,对象,范围,Splat,日期,数学,异常处理开始学习CoffeeScript ,正则表达式,类和继承,Ajax,jQuery,MongoDB,SQLite。

CoffeeScript中的对象与JavaScript中的对象类似.这些是属性的集合,其中属性包括键和由分号(:)分隔的值.简而言之,CoffeeScript对象是键值对的集合.对象使用花括号定义,空对象表示为 {} .

语法

下面给出的是CoffeeScript中对象的语法.在这里,我们将对象的键值对放在花括号中,并使用逗号()分隔.

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

示例

以下是在CoffeeScript中定义对象的示例.将此代码保存在名称为 objects_example.coffee

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

打开命令提示符并编译.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中的其他块语句一样,我们可以使用缩进而不是花括号 {} ,如下例所示.

示例

我们可以重写上面没有大括号的例子,如下所示.

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

嵌套对象

在CoffeeScript中,我们可以在对象中编写对象.

示例

以下示例演示CoffeeScript中的嵌套对象.将此代码保存在名为 nested_objects.coffee的文件中

contact =  personal:    email: "personal@gmail.com"    phone:  9848022338  professional:    email: "professional@gmail.com"    phone:  9848033228

打开命令提示符并编译.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);

对象的理解

要迭代对象的内容,我们可以使用理解.迭代对象的内容与迭代数组的内容相同.在对象中,由于我们必须检索两个元素键和值,我们将使用两个变量.

示例

以下是一个示例,说明如何使用理解迭代对象的内容.将此代码保存在名为 object_comprehensions.coffee的文件中

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

打开命令提示符并编译.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);

现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.

> coffee object_comprehensions.coffee

执行时,CoffeeScript文件产生以下输出.

name::Mohammedage::24phone::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

打开命令提示符并编译.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);

现在,再次打开命令提示符并运行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不允许保留关键字作为对象的属性名称,如果我们想要使用它们,我们必须使用双引号""来包装它们.

示例

考虑以下示例.这里我们创建了一个名为 class 的属性,它是一个保留关键字.将此代码保存在名为 reserved_keywords.coffee的文件中

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

打开命令提示符并编译.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,    "class": "X"  };  for (key in student) {    value = student[key];    console.log(key + "::" + value);  }}).call(this);

现在,再次打开命令提示符并运行CoffeeScript文件,如下所示.

c:\> coffee array_of_objects.coffee

执行时,CoffeeScript文件会产生以下输出.

name::Mohammedage::24phone::9848022338class::X