「class構文」って普段jQueryとWordPressだけ使ってたら絶対に見ない。
知らずに遭遇したら「class構文アレルギー」になっちゃうので、免疫を付けたい。
なので、いろんな記事を漁りました。JSとPHPで、理解しやすい方から学ぶスタイル。
一番わかり易い例文は、コレだと思いました。JSです。
<body>
<script>
class Person {
constructor(名前) {
this.なまえ = 名前;
}
say() {
console.log("こんにちは。" + this.なまえ + "です");
}
}
var nishi = new Person("西 大輔");
nishi.say();
var pikkoro = new Person("ピッコロ大魔王")
pikkoro.say();
</script>
</body>
実行すると、コンソールに表示される文字は
こんにちは。西 大輔です
こんにちは。ピッコロ大魔王です
javascriptで、昔ながらの書き方だと
function Person(名前) {
this.setName(名前);
};
Person.prototype = {
setName: function(名前) {
this._なまえ = 名前;
},
getName: function() {
return this._なまえ;
},
say: function() {
console.log('こんにちは。' + this._なまえ + 'です');
}
};
var nishi ="西 大輔";
Person.say(nishi);
var pikkoro = ("ピッコロ大魔王")
Person.say(pikkoro);
急に「体になじむ感じ」がしてきました。(newしてないから微妙にちがうかも?)
つまりJavascriptの function()
の下に prototype
を書くのと一緒だということ。
インスタンス(分身)を生成するから、引数を保持したままで、
いろんな呼び出し方でくり返し使えるよっていう、シンプルにそれだけだと思う。
「コンストラクタ」とは「最初に実行されるやつ」です。
「一番上に書く」のと何が違うのか?多分一番上に書くより先に実行されるということでしょう。
以上です。