# オブジェクトのメソッドの定義

こちらのセクションに入る前に、`index.js`を`part2_index.js`とリネームして、`index.js`を新たに作成しましょう。

「オブジェクト型」のセクションにて軽く説明しましたが、**オブジェクト**は**プロパティの集合体**になります。プロパティを呼び出す時に`.`(ドット)でつなげるとお話ししましたが、本チャプターでよく使用している`console.log`も、実は**consoleオブジェクトのlogメソッド（**&#x30AA;ブジェクトが持っている関数のことを**メソッド**と言いま&#x3059;**）を呼び出しているのです。consoleオブジェクト**はコンソールに対して、ログなどの情報を出力するために使用されるオブジェクトで、`console.info` や、 `console.warn`などメソッドがあります。下記のようなイメージです。

```javascript
const console = {
    log: () => // コンソールに出力する処理
    info: () => // コンソールに背景を水色にして出力する処理
    warn: () => //　コンソールに背景を黄色して出力する処理
    ....
}
```

`console.log()`のようにオブジェクトにメソッドを定義して、呼び出す方法は以下になります。

<pre class="language-javascript" data-title="index.js◎"><code class="lang-javascript"><strong>const product = {
</strong><strong>  name: 'りんご',
</strong><strong>  price: 100,
</strong><strong>  sayDescription: () => {
</strong><strong>    console.log('とっても甘いです');
</strong><strong>  },
</strong><strong>};
</strong><strong>product.sayDescription()
</strong></code></pre>

その他にも配列の説明の際に、`fruits`という配列の要素数を出力するために、`fruits.length`と記述しました。実は配列も**Arrayオブジェクト**というオブジェクトなので、`length`という要素数を値にもったプロパティを持っているためです。`let fruits = ['りんご', 'みかん']`と定義した段階で、内部的に**Arrayコンストラクター**から**Arrayオブジェクト**を生成します。
