phantomjs

今更ながらに軽く触ってみた。

http://www.phantomjs.org/

インストールはhomebrewで。

$ brew install phantomjs

Javascriptのコマンドライン実行環境らしい。APIとしては、他のWebkitブラウザと同じJavascript APIに加え、主に以下の2つのが追加されている。

  • phantom: 実行環境へアクセスするためのオブジェクト。args, scriptName, exitなどを持つ。
  • WebPage: webページをカプセル化したオブジェクト。URL経由でHTMLページを読み込んだり、外部のjsをincludeしたり、イベントを発行したりできる。

ちょっとしたツール作ったりとか、ユニットテストとかに便利そうな感じ。

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