thisの意味は状況によって異なる その3. コンストラクタでのthisは?
このthisは 何についてのthis??
jsでよく出てくるthisのパターンの4つを紹介
1.メソッド呼び出し
2.関数呼び出し
3.コンストラクタ呼び出しパターン
4.apply callパターン
今回はその3
コンストラクタでの呼び出しパターン
コンストラクタとは設計図 (PHPと違ってJSはクラスを持たない)
コンストラクタでインスタンスを多量に生成する
オブジェクトの自由の幅が広いコンストラクタも、もちろんまた、オブジェクトである。
注意!!コンストラクタを作る時には、かしら文字を大文字にしてあげること(設計図用だと明示させるため)
各インスタンスのプロパティを取ってみる
コンストラクタ
function Object(value) { this.myValue = value; this.myFunc = function () { this.myValue++; }; }
newしてインスタンスを生成すること
var myObject = new Object(0); console.log(myObject2.myValue); //0 Object.myFunc(); console.log(myObject2.myValue); //1
もう一つインスタンスを生成してみる
var myObject2 = new Myobject(3); console.log(myObject.myValue); //3 myObject.myFunc(); console.log(myObject2.myValue); //4
つまり、コンストラクタのなかでプロパティをつけるために使うthisの場合は、newで増産した各インスタンス自身の、オブジェクトであると言える
コンストラクタのなかでプロパティをつけるために使うthisは この場合、各インスタンスの生成時に、myObjectにもmyObject2にもその都度なっている
追記、、、
new せずに
var myObject = MyObject (0)とすると、
普通の関数を呼び出したことになると思うので、
ただの関数でのthisの呼び出し(その2を参照)になるので、グローバルオブジェクト つまりwindowオブジェクトを指すことになる