見出し画像

7ページ分ウロウロです GAS

優しかったコーチがS味を帯びてきています。

こんにちは!サキナオコです^^元気です。
本日部屋にいながらにして温泉気分です。

いつもご覧いただき、スキ、フォロー、コメントまでいただき、
本当にほんとうに感謝です。どうもありがとうございます!*^o^*
今日また止まらず進む力いただきました!^o^/

はい、何だかしばらくぶりな感じの本日はメソッドとプロトタイプのところです。

こちら、7ページ分を行ったり来たりしました。
単語が何を指していたのか確認したり、書かれていることを理解するために何度も往復したのです><

まぁ、とにかく振り返ってみます。

クラスから生成したインスタンスにメソッドをもたせるには、クラスの定義にメソッド定義を含める…と。…はぁ。。
thisキーワードも使えると。

では前回学習したクラス内に入れればいいのですね?
前のを少しかえてみます。

function myFunction_8_20() { 
class Person{                 // 1
  constructor(num,name){      // 2
    this.番号= num;           // 3
    this.namae=name;          // 4
  }

  greet(){     // 5 クラス内でのgreetメソッドの定義
    console.log(`Hello!My Number is ${this.番号}.`);
  }

  myName(){    // 6 5に同じ myNameメソッドの定義
    console.log(`I'm ${this.namae}!`);
  }

}
const p = new Person(1,'Saki');
p.greet();
p.myName();
}

// Hello!My Number is 1.
// I'm Saki!

1,2,3,4は以前と同じです。ははぁ。5と6のところ。
それがクラス内でのメソッド定義。そこはわかります。

クラス内でのメソッド定義はメンバー間のカンマ区切りは不要とのことで、ちょっと意味がわからず調べましたが、メソッド定義間のセミコロンのことなのか?とわからずじまいでした。

いつかわかるだろうと次へいきます。
そしてメソッドの定義にアロー関数は使えないと。アロー関数内でthisキーワードを使うと外側のスコープのthisの定義に従うから、だそうで、具体的にはよくわかりません。まあ、使えないのですよね。

はい、次はプロトタイプ。意味を調べたら「原型」とありました。
JSのクラスにはprototypeプロパティがあり、そこにメソッドを定義するとそれはプロトタイプメソッドとなる。それはそのクラスを元に生成されたインスタンスから参照できると。

私が理解したイメージでいうと、同じメソッドがあった場合はそれをエイリアスみたいな形でコピーし実際のメソッドの方は複製しないでインスタンスを作るということかなと。メモリの節約で。

それで、参照する場面になったらprototypeプロパティを探しに行って同じメソッドを参照して実行してくれて軽いし便利だよ〜ってことなのかと。

その他、インスタンスのメソッドの変更…上書きみたいなことができる、だけど、prototypeプロパティは上書きされないということ。

インスタンスとクラスのprototypeプロパティには同名のメソッドがオッケーらしく、バッティングしている場合はインスタンスのメソッドの呼び出しが優先されるということ。

だんだん内容がわかりづらくなってきているのが身にしみます。
テキストコーチは最初は優しく丁寧に打ち方を教えてくれていたのに、気づいたら
「この球打てるよね?」と左右に速い球出しをするようになっていたような。

もたもたしながらやっと球に追いついているような、いないような。
微妙です><今日はもう終わります。

この記事が気に入ったらサポートをしてみませんか?