ローカルで prototype.js をいじる
WSHでDOM (Shibuya.js in Kyoto) - てっく煮ブログを見て
「そうか。こうすれば WSH では prototype.js が使えるのか」と思い
僕もローカルの SpiderMonkey で prototype.js をコンパイル*1できるようにしてみた。
でも、にとよんさんのように DOM には対応してないし、include() とかも使わずにベタ書きである。
いいんだ。とりあえず動けばいいんだ。
// おまじない window = {}; navigator = { userAgent: '' }; document = { createElement: function() { return { __proto__: {}, appendChild: function() {} }; }, createTextNode: function() {} }; HTMLElement = { prototype: {} }; // 以下に prototype.js の内容を置く var Prototype = { Version: '1.5.1.1', . . // 省略 .
prototype.js のバージョンが「1.5.1.1」なのは
特集:prototype.jsを読み解く|gihyo.jp … 技術評論社で
リーディングの対象として扱っているのがそのバージョンで
僕は今現在この記事を参考に prototype.js を読んでいるからだ。
おまじないは生の prototype.js をコンパイルして出てきてエラーを見て
適当にエラーを避けるようにオブジェクトを定義したもの。
ちなみに最初は「document を空のオブジェクトにしちゃうだけで動くかも!」と思っていたのだけど
さすがにそこまで甘くはなかった。
このおまじないはやっつけ感あふれる適当さだけど
それでも勉強に使う分にはこれでけっこう便利なのだ。
上述したように DOM 関係は全然まともに動かせないのでアレだけど
String とか Array とかの挙動はローカルで色々いじって試すことができる。
print('abc'.times(3)); // => abcabcabc ['camel-case', '-camel-case', 'camel-cASE'].each(function(str) { print(str.camelize()); }); // => camelCase // => CamelCase // => camelCASE
昨日書いたMozrepl で prototype.js いじる - gan2 の Ruby 勉強日記よりも
こっちの方が手軽でいい感じだ(・∀・)
2つを使い分けて、DOM 周りをいじるときは Mozrepl を使うようにしようと思う。