コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

出羽さんのブログより

出羽ブログよりJavaScriptの記事。
http://d.hatena.ne.jp/dewa/20080110#1199944760
最近、JavaScriptでクラスを作ることがあって、動きがいまいちつかめなかったけど、これでわかった。
前は、クラスの定義で

var Test = function(a) {
  this.a = a;
  a = new String("置き換え");
  
  function func() {
    alert("a= " + a);
    alert("this.a= " + this.a);
  }
}

としていました。この状態で、

var t1 = new Test("para");
t1.func

としても、this.aの値がnullでした。
勘違いは、クラスの中のfunctionもthisで定義するところで、以下のようにしてうまく行きました。

var Test = function(a) {
  this.a = a;
  a = new String("置き換え");
  
  this.func = function() {
    alert("a= " + a);
    alert("this.a= " + this.a);
  }
}

先ほどとおなじく

var t1 = new Test("para");
t1.func

とすると、

a-置き換え
this.a=para

となります。
だいぶ見えました。
JavaScriptは簡単なようで難しいです。