Prototype -> jQuery 移行メモ
ライブラリ使わないでゴリゴリしているところも含め、混在していたので使用ライブラリを jQuery のみになるよう改修したのでその時の気付きのメモ。
とはいえ数ヶ月前なので、細かいところ忘れちゃった…
- Prototype の Ajax.Updater() は、load() に変更できる。
デフォルトは GET なので、受け取りを POST 専用のロジックにしている場合は修正が必要。
- IEだと異様にキャッシュを持つので、編集フォームを繰り返し呼び出すとか、同じDIV内を頻繁に書き換えるとかいう処理をしてる場合は load() じゃなく、$.ajax() にして、{cache:false} を指定しておくのが確実。
- 上記2つは $.ajaxSetup() でデフォルトを変更しておくという手もある。
どっちにするのかは好みだと思う。今回は他への影響が気になったので、キャッシュ切りが必要なところは $.ajax() にしておいた。
- $.post(), $.get() で送信して、コールバックで if (status!="error") {} とか第二引数に判定かけてロジックを書いておくと、移行前のロジックをきれいに移せるような気がする。
誤読しそうなところ以外はあんまりいじらない方針でいったから、このやり方が正しいかどうかはわからない。
- デバッグに ajaxError() 便利。ありがとう、そして、ありがとう!
エラーコンソールに出ないのでしばらく悩んだよ…
- Prototype でオブジェクトなりプロパティなりを存在チェックしてたところは軒並み、length() > 0 に変更する。jQuery オブジェクトは配列で返されるので undefined は通用しない。
クラス作るときのやり方
ライブラリ使わないでごりごりしたり、jQueryプラグイン作ったりしたので、その時の気付き。
- オブジェクトのプロパティは先行定義できない。
やり方色々あるし作り方によってはOKなのかな。必要なときに this.property=hoge ってした。すごい違和感ある…
- ないときにアクセスしても undefined が返るだけ。エラーにはならないから気付きにくいので、意識しておいたほうがデバッグが楽に感じる。
おかしい…と思ったときにまずどこを疑うか的な。
- prototype オブジェクトにセットするプロパティは読み出しのみ有効なのは、やり方がまずいのか、そういうものなのか。
static = クラス変数、クラスメソッド
こんなイメージ…でやってた。当たっているかは知りません…