phantomjs
今更ながらに軽く触ってみた。
インストールはhomebrewで。
$ brew install phantomjs
Javascriptのコマンドライン実行環境らしい。APIとしては、他のWebkitブラウザと同じJavascript APIに加え、主に以下の2つのが追加されている。
- phantom: 実行環境へアクセスするためのオブジェクト。args, scriptName, exitなどを持つ。
- WebPage: webページをカプセル化したオブジェクト。URL経由でHTMLページを読み込んだり、外部のjsをincludeしたり、イベントを発行したりできる。
ちょっとしたツール作ったりとか、ユニットテストとかに便利そうな感じ。
Function::arguments
argumentsは引数リストだと思っていたら、実はオブジェクトらしい。
arrayにそのまま渡したい時に困るのだが、変換できる。
Array.prototype.slice.call(arguments)
https://developer.mozilla.org/en/JavaScript/Reference/functions_and_function_scope/arguments
Function::apply and call
JSのapplyってずっとよくわかってなかったので調べてみた。
schemeの(apply )と同じようなもんと考えて納得。
あるオブジェクトの関数を別のオブジェクトに適用する。
"hoge".slice() //=> "hoge" [].slice.apply("hoge") // => ["h", "o", "g", "e"]
似たメソッドでcallがあるが、引数の取り方が異なる。
Array.prototype.slice.apply("hoge", [3,4]) Array.prototype.slice.call("hoge", 3, 4)
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call