ONE PIECEで学ぶオブジェクト

#〜ONE PIECE〜で学ぶオブジェクト

javascriptを学習中の作者が、大好きなONE PIECEになぞってオブジェクト作成方法について考えてみました。


それでまず簡単にオブジェクトについて




###オブジェクトとは
**オブジェクトとはプロパティの集合体**と言えます。
中にはオブジェクトの機能とも言えるメソッド（処理）を含みますが、一つのオブジェクトが持つデータのことをプロパティと言います。
簡単に言いますと、現実世界に存在するものに例えられますが、🚘（車）というオブジェクトは、車名や色、排気量などの**プロパティ（データ）**を持ち、車というオブジェクト毎にその値は違ってきます。
（一つの駐車場に停まっている全ての車にも違いや個性がある様なものです）
そしてアクセルを踏むと車が走り出したり、ブレーキを踏むと減速する等の**メソッド（処理）**を持っています。

```js
var 変数名 = {"キー": "値", "キー": "値", "キー": "値"};  //この{}オブジェクトリテラルで囲ったものがオブジェクトで、今回は３つのプロパティを持っています。
```


それでは、ONE PIECEの世界になぞってオブジェクトについて学んでいきましょう！


##四皇をオブジェクトにしてみた
ONE PIECEの世界で最強の海賊として恐れられている４人の皇帝が「**四皇**」と呼ばれていますね。
海賊団の規模、戦闘力、知名度ともに最高クラスの海賊達です。
（ちなみに主人公ルフィは「第５の皇帝」として海賊株が急上昇している最中です）
それでは四皇（であった海賊も含めて）を紹介していきます。
###白ひげ
まずは白ひげの愛称で海賊時代を作った立役者の一人、
白ひげ海賊団のおやぶん**『エドワード・ニューゲート』**
悪魔の実「グラグラの実」を食べた地震人間ですね。


```js
let Edward_Newgate = {
    name: "shirohige" //呼び名プロパティ
    Devilfruit: "guragura" //悪魔の実プロパティ
    Sweepstakes: 5040000000 //懸賞金プロパティ

    earthquake: function(){"地震を起こす処理"}; //メソッド
};
```
###ビッグ・マム　　
二人目は、最強の巨人族でビッグ・マム海賊団の船長**『シャーロット・リンリン』**
「ソルソルの実」の能力者で魂や寿命を自由に操ることが可能なチート能力をもつ、トットランドの女王です。


```js
let Charlotte_Ringling = {
    name: "Bigmum" //呼び名プロパティ
    Devilfruit: "soulsoul" //悪魔の実プロパティ
    Sweepstakes: 4388000000 //懸賞金プロパティ

    Take_away_the_soul: function(){"魂を奪う処理"}; //メソッド
};
```
###カイドウ
三人目は、陸海空生きとし生けるもの全ての者達の中で「最強の生物」と呼ばれる百獣海賊団船長**『カイドウ』**
「リュウリュウの実モデル・ドラゴン」の能力者と予想されている不死身人間ですね！　

```js
let kaidou = {
    name: "kaidou" //呼び名プロパティ
    Devilfruit: "ryuryu" //悪魔の実プロパティ
    Sweepstakes: 4611100000 //懸賞金プロパティ

    Transform_dragon: function(){"龍に化ける処理"}; //メソッド
};
```
###黒ひげ　　
４人目は、ラスボスになるのではと言われている黒ひげ海賊団船長『**マーシャル・D・ティーチ**』
体の構造が異形で複数の悪魔の実の能力を持つ悪を絵に描いたような人物です。

```js
let Marshall_D_teach = {
    name: "kurohige" //呼び名プロパティ
    first_Devilfruit: "yamiyami" //悪魔の実プロパティ
    Sweepstakes: 2247600000 //懸賞金プロパティ

    Deprive_ability: function(){"悪魔の実の能力を奪う処理"}; //メソッド
};
```

そしてこの４人を一纏めにした四皇オブジェクトを生成して、さらに四皇オブジェクトを海賊オブジェクトのプロパティの一つとし、最後に海賊プロパティをONE PIECEのプロパティの一つとして変数化してみると下記のコードになるのではないでしょうか。

```ONE_PIECE.js
let ONE_PIECE = { //ONE_PIECEを変数化
    Pirates: {  //ONE_PIECEの海賊プロパティ
        Four_emperors: [  //海賊オブジェクトに配列型の四皇プロパティを定義し、配列に海賊を入れていきます。
            {
                name: "shirohige" 
                Devilfruit: "guragura" 
                Sweepstakes: 5040000000 
                earthquake: function(){"地震を起こす処理"};
            },{
                name: "Bigmum" 
                Devilfruit: "soulsoul"
                Sweepstakes: 4388000000 
                Take_away_the_soul: function(){"魂を奪う処理"}; 
            },{
                name: "kaidou" 
                Devilfruit: "ryuryu" 
                Sweepstakes: 4611100000 
                Transform_dragon: function(){"龍に化ける処理"};
            },{
                name: "kurohige" 
                first_Devilfruit: "yamiyami" 
                Sweepstakes: 2247600000 
                Deprive_ability: function(){"悪魔の実の能力を奪う処理"}; 
            }
        ],
        Sail: function(){"海賊として航海する処理"} //海賊オブジェクトは冒険のために航海するメソッドを持っています。
    },
    Navy: //以下略省略 ・・・　ONE PIECEは海賊プロパティの他に海軍プロパティも持ちます。
};
```
###黒ひげになって能力を奪おう
黒ひげが、死んだ白ひげの体からグラグラの実の能力を奪ったことも衝撃的でした。
ということで、黒ひげオブジェクトにグラグラの実のプロパティを追加してみましょう！

```js
Marshall_D_teach.second_Devilfruit = "guragura"
```
これで黒ひげオブジェクトにグラグラの実のデータを追加できましたね！
黒ひげは二つの能力を持つ様になりました！

```js
    name: "kurohige" 
    first_Devilfruit: "yamiyami" 
    second_Devilfruit: "guragura" //追加した悪魔の実プロパティ 
    Sweepstakes: 2247600000 
    Deprive_ability: function(){"悪魔の実の能力を奪う処理"};
    //※グラグラの使い方は覚えていないものとします。
```

どうして黒ひげが、白ひげの能力を知ることが出来たのかと言いますと（白ひげ有名だからとかストーリーの設定について冷静に考えないでください。。）

まずは白ひげの能力が何であるかアクセスして確認しないといけませんね。

```js
  ONE_PIECE.Pirates.Four_emperors[0].Devilfruit;
  // もしくは
  ONE_PIECE["Pirates"]["Four_emperors"][0]["Devilfruit"];
```
これで配列０番目に入れられた白ひげオブジェクトの悪魔の実プロパティにアクセス出来ますね！

黒ひげは、白ひげの地震を起こす処理（メソッド）を実行したいので、プロパティだけでなくメソッドを実行することも出来ます（ユーザー目線）。

```js
ONE_PIECE.Pirates.Four_emperors[0].earthquake();
```


私の予想ですが、おそらく黒ひげは黒マントの中でMacをイジりながらコードをせかせかと書いていたのだと思います。

以上がONE PIECEの世界で考えるオブジェクトでした！
面白かったらLGTMお願いします🤗