JavaScriptの技法:高度な関数の活用
翻訳校正:原井彰弘
JavaScriptに含まれている高度な関数を用いると、ウェブサイトをパワフルかつ迫力のあるものにできる。本稿では、再帰と参照渡し、および値渡しの利用方法を紹介する。
JavaScriptの関数を用いると、一連の手順をまとめ、簡単に特定のタスクを実行したりクラスのコンストラクタとして動作させることが可能になる。JavaScriptの基本的な関数についてのドキュメントはインターネット上に多数存在するが、それよりもむしろ、高度な関数の機能について調べてみよう。本稿を読んで、再帰やそれ以外の高度な機能を利用するために必要な洞察力を高めていただきたいと思う。
難しい話題に入る前に、JavaScriptで関数を定義するにはどのような方法があるのか見てみよう。
JavaScriptで関数を定義する方法
JavaScriptでは以下のような3種類の方法で関数を定義することができる。
- function文を用いた定義
- Function()コンストラクタを用いた定義
- functionリテラルによる定義
ここでは、addという関数を作成することによって、これら3つのアプローチを紹介しよう。add関数は、2つの引数を受け取ってそれらを足し、その結果を返すものとする。
リストAでは、もっとも一般的なfunction文を用いた関数の作成方法を示している。また、リストBではFunction()コンストラクタを用いた関数の作成方法を示している。ちなみに、私はFunction()コンストラクタをonChangeやonClickなどのようなイベントハンドラとして使用している。Function()コンストラクタを利用するメリットは、thisキーワードの使用が可能になることだ。thisキーワードは、関数を呼び出したオブジェクトの参照として振る舞う。thisを用いると、関数に呼び出し元のオブジェクトを渡すことが可能になるのである。最後に、リストCでは関数をリテラルとして定義する方法を示している。また、JavaScriptの関数は文字列でもあることも示している。つまり、
xyzzy = add; alert(xyzzy(2,2))
このようなコードは、次のコードと同じ結果を出力するのである。
alert(add(2,2))
関数をリテラルとして定義するメリットは、サーバサイドのJavaScript関数をクライアントサイドにコピーできるようになることだ。
リストA
function add(x,y) {
return x + y;
}
リストB
var add = new Function('x','y','return x + y;');
リストC
var add = function(x,y) {return x + y;};
さて、基礎については詳しく説明したので、次にJavaScriptのより高度な応用について見てみよう。
- 4人の推薦記事
- 2人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(1)
- 2日前のトップ記事
- 3日前
- 4日前
- 5日前
- 6日前
- ホワイトペーパー
- 話題のタグ
動画再生耐久レース―フル充電からどれだけ耐えた?
心当たりありませんか--あなたの上司がイヤがる5つの話し方
フォームデザイン虎の巻:複数の選択肢を提供する
フォトレポート:技術サポートの悪夢
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
ZDNet Japan ホスティング特集
ZDNet Japan Green IT
DELLが掲げる「新・仮想化アセスメントサービス」
Techno Exchange