@kyanny's blog

My thoughts, my life. Views/opinions are my own.

John Resig が 2008 年に書いた JavaScript Micro Templating のコードがわからない

John Resig - JavaScript Micro-Templating
これを使ってみてコード読んでみたけどさっぱりわからないので途中途中で console.log を挟み込んでみたりコメント欄で「わかんね」って書いてたひとが個人ブログにまとめを書いてて Josh's Olde Blogge: Micro Templating from John Resig: a code review それも流し読みしたりして、なんで "obj" とか文字列で渡してるのかとか with(obj) の意味とかなんとなく把握できたんだけどまだ一カ所どうしてもわからない部分があって、

print=function(){p.push.apply(p,arguments);};

これがわからない。 print ってどこからも呼ばれないし実際ここ全部削除してもちゃんと動くし考えてみてもやっぱり不要そうだしレビューしてるほうのエントリにもそういうコメントがあって(ちなみにそのエントリでもこの部分はわからんと書いてある)、このコードの意味がわからなくて気になっている。気になるだけで別に困ってないけど。で例によって風呂入ってる最中にも考えていて、もしかして var html = tmpl('template').print(data); とかなんか、そういうことをしようと思って書いてたけど結局使うのやめちゃって残ったままになってるだけなのか?と思った。 str をごにょごにょやってる箇所はよくわからないけど要するに文字列をバラしていったん配列にして、その過程で <%= %> の囲みが外れて生の JavaScript コードとして評価されて最後にもう一度 join して文字列を返してるようだ。