たかブログ

webを勉強しています。

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オブジェクトを指すことになる