📜  CoffeeScript-对象

📅  最后修改于: 2020-10-26 05:46:40             🧑  作者: Mango


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

句法

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

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

以下是在CoffeeScript中定义对象的示例。将此代码保存在名称为object_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::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

打开命令提示符并编译.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::Mohammed
age::24
phone::9848022338
class::X