プロトタイプ

プロトタイプはJavaScriptにおける中核的な機能で、プロパティの継承の役割を担うってことはわかってるんだけど、細かいこと分かんない>_<
いろいろ試して、少しずつ理解を積み上げていく!

Circle = function(){};
Circle.PI = 3.14;

var c = new Circle();
console.log(c.PI);      // undefined
console.log(Circle.PI); // 3.14

関数(オブジェクト)のプロパティは継承されてない。では、これならどうか?

Circle = function(){};
Circle.prototype.PI = 3.14;

var c = new Circle();
console.log(c.PI); // 3.14

継承できた!


実際にはプロパティをコピーしてるわけではなく、実行時にCircleオブジェクトのプロトタイプから読み出すというのがポイント。

Circle = function(){};
Circle.prototype.PI = 3.14;

var c = new Circle();
console.log(c.PI);

Circle.prototype.PI = 3.1415;
console.log(c.PI);


じゃあ、継承をネストするにはどうしたらいいんだろう?というところで詰まってしまった。。。The Good Partsを読むことにする!