JavaScriptクロージャを完全理解!スコープチェインを知る(後編)

白石俊平(あゆた)
2008-08-01 20:30:00
  • このエントリーをはてなブックマークに追加

スコープチェインの知識を活かす

 今回の話は、JavaScriptの実行環境(Webブラウザなど)が自動的に行う動作を細かく解説したものでした。こんな面倒な事を知らなくたって、十分JavaScriptプログラミングは可能ですし、クロージャを扱うにも困りません。

 だからといって、知っていても何の得にもならないかといわれると、それは大間違い。ここで得た知識は、いろんな応用が出来ます。

 例えば、「クロージャから、元になる関数内のローカル変数への参照は、確実に存在するけれども『目に見えない』」という特徴は良く利用されます。

 以下のコードは、オブジェクト内の変数を「プライベート」にし、アクセッサメソッドを利用するよう強制するといった例です(JavaScriptには、publicやprivateといったアクセス指定子がありません)。

 Humanクラスのオブジェクトは、一度作成するとその状態を変更する事が出来ません。しかし、getName()やgetAge()といったメソッドを用いて状態を参照することはできます。

function Human(name, age) {
  this.getName = function() {
    return name;
  };
  this.getAge = function() {
    return age;
  };
}
var shiraishi = new Human("shiraishi", 30);
alert(shiraishi.getName() + ":" + shiraishi.getAge());

まとめ

 前回から2回にわたって、スコープチェインについて詳しくお話ししてきましたが、いかがだったでしょうか。スコープチェインは、関数やプロトタイプと並んでJavaScriptにおける重要な概念ですが、普段それほど脚光を浴びる事はありません。しかし、身につけておく事で将来必ず役に立つ時が来るでしょう。

  • コメント(7件)
#1 uchima   2008-12-22 17:44:30
とても良いシリーズなのに、ここで終わってしまうのは残念で仕方ありません。ぜひとも最後までお願いします。
#2 anonymous   2009-03-21 18:24:50
わかりやすく、ためになりました。
ありがとうございました。
#3 anonymous   2009-04-30 19:36:45
変数のスコープと合わせて勉強になりました
いままで曖昧だったのですっきりです
#4 anonymous   2009-06-17 17:55:26
痒い部分や、今までどういう風に動作していたか等が理解できてとてもためになりました。
今後の執筆活動も期待しております。
ありがとうございました。
#5 anonymous   2010-10-15 16:36:23
大変役に立ちました。
#6 シロクマ。   2011-12-20 15:34:07
javascriptってすごく柔軟性のある言語なんですね。
rubyも柔軟ですが、それに匹敵しそうですね。
#7 c.c.   2015-10-27 19:18:46
JavaScriptはとても柔軟で書き方が多彩なので勉強していて面白いです
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]