http://www.apple.com/aperture/のようなjavascript使ったかっこいいサイトに憧れ、最近サイ本でjavascriptの勉強を始めているわけですが、p349に勉強になったコードがあったのでメモを。
まず、make()という関数があるのですが、この関数は指定されたタグ名、属性、子要素を持つHTML要素を生成します。
シンタックスは、
make(tagname, attribute, children)
です。
これは次のように使います。
var table = make("table", {border:1}, make("tr", [make("th", "Name"), make("th", "Type"), make("th", "Value")]));
これだとテーブルをたくさん使う場合には、少し面倒です。
そこで本書では次のように、指定されたタグを使ってmake()を呼び出す関数を返すmaker()を定義しています。
function maker(tag){ return function(attrs, kids){ if(arguments.length == 1) return make(tag, attrs); else return make(tag, attrs, kids); } }
これを使って、テーブル関係のタグを生成する関数を定義しておくことにより、
var table = maker("table"), tr = maker("tr"), th = maker("th");
次のように、テーブル作成処理を簡素化して書けます。
var mytable = table({border:1}, tr([th("Name"), th("Type"), th("Value")]));
maker()で上手くクロージャを使っています。なるほど!!