2012年4月25日水曜日

関数とコンストラクタの違い


var x = 1;

var fn1 = function(){

  print(this.x);

};  

fn1();
//結果は1。thisはfn1オブジェクトではなくグローバルを指している。

print(fn1.x);
//undefined

var fn2 = function(x){

  this.x = x;
}:


var F1 = new fn2(10);
var F2 = new fn2(5);

print(F1.x); //10
print(F2.x) //5
//fn2内のthisは新規オブジェクトを指している。
関数実行時にnewをつけると,関数内でのthisの意味が変わり,「新規オブジェクト」を指すようになる。 newをつけて実行される関数は,新規オブジェクトの生成メソッド(コンストラクタ)として機能する。

0 件のコメント:

コメントを投稿