Coffeescript-objects

提供:Dev Guides
移動先:案内検索

CoffeeScript-オブジェクト

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: "[email protected]"
    phone:  9848022338
  professional:
    email: "[email protected]"
    phone:  9848033228
  • コマンドプロンプト*を開き、以下に示すように.coffeeファイルをコンパイルします。
> coffee -c nested_objects.coffee

コンパイル時に、次の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);

オブジェクトの理解

オブジェクトの内容を反復処理するために、内包表記を使用できます。 オブジェクトの内容を繰り返すことは、配列の内容を繰り返すことと同じです。 オブジェクトでは、2つの要素のキーと値を取得する必要があるため、2つの変数を使用します。

以下は、内包表記を使用してオブジェクトのコンテンツを反復する方法を示す例です。 このコードを 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