prototypeとは?/ プロミス
[ 422] prototype.js v1.5.0 の使い方
[引用サイト] http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html
この熟考の上記述された標準に準拠したコードは、Web 2.0 において特徴となるリッチでインタラクティブなウェブページを制作する際の重荷を、あなたの肩から取り去ってくれるでしょう。 もしこのライブラリを使ったことがあるなら、充実したドキュメントがこのライブラリの売りではないことに気がついたはずです。 加えて、このライブラリによって提供されているオブジェクト、クラス、関数、拡張機能についての 非公式リファレンス も提供しています。 ここで提供する例とリファレンスを読んでいると、プログラミング言語 Ruby に詳しい開発者は Ruby のビルトインクラスと、このライブラリが実装している拡張が非常に似ていることに気がつくかもしれません。 これらの関数により、何度も同じことをタイプしたり、わかりきったイディオムを繰り返す煩わしさから開放されます。 これらの追加メソッドは要素を隠したり表示したり、その大きさを取得したり、別の要素に向けてスクロールしたり、というような多くのタスクを簡単にできるようにしてくれます。 この関数のもうひとつの利点は、ID 文字列だけでなく要素オブジェクトそのものを渡すこともできる、ということです。 単純に $$() 関数自体を置き換えることができる、他のフリーの実装を検討した方がいいかもしれません。 例えば、見付かった文字列が(単に置換されるだけでなく)どう変換されるか、をメソッドに指示するのに文字列テンプレートを使うことができます。 もう少し詳しく書くと、正規表現において括弧に括られた \w+ を使ってキャプチャグループを宣言しています。 このグループによってキャプチャされた値は、置換用のテンプレート文字列で #{1} を使うことで取得できます。 望んだ置換結果を得るために、独自のロジックを使うことができるようにするには、どうすればいいのでしょうか? この関数は引数として配列を受け取り、配列のインデックス 0 にはマッチしたテキストが、それ以降(インデックス 1 から N)にキャプチャグループの値が入ります。 アプリケーション中での JavaScript コードの量が増えるにつれ、同じタイプのオブジェクトの集合を書式化して表示する機会も増えるのではないでしょうか。 オブジェクトのリストをループで回し、オブジェクトのプロパティに基づいて定型の書式化文字列にあてはめる、というコードは珍しいものではないでしょう。 以下の例では、ショッピングカート内の商品を書式化し、複数にわたる HTML 行として列挙するものです。 ここまでで説明した関数はもちろん素晴らしいのですが、実際の所最先端モノというわけではありませんよね? これくらいは自分自身で書けるかもしれませんし、自分のスクリプトとして既に同じような物を持っているかもしれません。 それでは AJAX 的コードが必要な時に、いかにこのライブラリが助けてくれるかを解説していきましょう。 Ajax オブジェクトは、AJAX 機能を記述する際に必要となるトリッキーなコードを覆い隠し、シンプルにするためにライブラリにより事前に定義されたオブジェクトです。 そしてサポートしなければいけないブラウザーが 1 種類だけの時にはラッキー、と感じていることでしょう。 同様に onFailure オプションは呼出し時になんらかのサーバーエラーが発生したときに呼び出される関数として指定することができます。 どの AJAX 呼び出しを使っている場合でも、特定のイベントにおいて常に実行されてほしいコードがある場合、 エラー状態を捕捉するための関数を指定するのに、コンストラクタ呼び出しにさらにオプションを追加します。 そうすると、(少なくとも IE では) スクリプトブロックにローカルな関数オブジェクトを作ることになってしまいます。 (訳註: この節は日本語の環境に慣れ親しんでいる方々には違和感のある説明かもしれません。とりあえずは原文を尊重して翻訳します) 代わりに、わたしが使っている方法をそのまま説明し、あなた自身の状況において適用しうる方法を見つけるためのヒントを提供します。 というのは、ファイルサイズがより小さくなりうることと、ソースコードを編集するのに Unicode 文字が含まれることは比較的珍しいからです。 ボタンをクリックすると、静的ファイルが読み込まれますが、非英語の文字はクエスチョンマークか他の記号で置き換えられてしまいます。 (もしダメなら、ブラウザが古いファイルをキャッシュしているかもしれません。ファイル名を変えて試してみてください)。 その HTML を生成しているコードが適切なエンコーディングとコードページでテキストを生成していること、 いずれにせよ、あなたの究極のゴールは以下のような HTTP ヘッダがレスポンスに含まれるようにすることです。 考えてみると、コードの中に配列を導入するという時には、遅かれ早かれループ中でそれを使うことになるわけです。 そうです、多くのプログラム言語が配列や同様の構造 (コレクションやリストなど) にそのような機能を提供しています。 先に述べたように、同じ種類の、同じプロパティとメソッドを持つ要素を配列に入れるのは一般的なことです。 現在の文字列に対して、パターン文字列(もしくは正規表現)を検索し、置換文字列もしくは置換関数の返り値で置換した物を返す。 クエリー文字列を、ハッシュのようなパラメータ名によりインデックス化された連想 Array に変換する。 イベントを発生したオブジェクトから始めて、指定された名前のタグを持つ最初の要素が見つかるまで DOM ツリーを上流に遡る。 ライブラリがあなたを助けてくれるもうひとつの方法は、オブジェクト指向で設計されたものでも一般的な関数風な使い方でも使うことができる多くのオブジェクトを提供することです。 このオブジェクトは指定された関数を繰り返し、タイマーを使って指定された間隔で呼び出す機能を提供します。 呼出し元の集合の数が一つめの引数で割り切れない場合、最後のグループの空き項目は、もし二つめの引数が指定されていればそれで、そうでなければ null で満たされる。 このオブジェクトは Ajax 関連のイベントが発生する際に呼び出されるオブジェクトのリストを管理します。 対応するイベントが発生した際に、登録されたすべてのオブジェクトのうち、対応する名前のメソッドを持ったものに対して、そのメソッドが呼び出されます。 このクラスは、Ajax オブジェクトで定義されるほとんどの他のクラスにおいて、基底クラスとして使われます。 ブラウザの設定変更を強要したり、ユーザーのブラウザーの選択肢を狭めたりしないためにも、ローカル URL のみを使う方がよい。 このリストは偶数個でなければならず、奇数番目はカスタムヘッダの名前、偶数番目はヘッダの値の文字列となる。 AJAX 呼び出しにおいて、クライアント側で不正なレスポンスや不正な引数のような例外が発生した際に呼び出されるカスタム関数。 例えば、2 を指定すると、リフレッシュの結果が以前のものと同じだった場合に、オブジェクトは次のリフレッシュまで以前の 2倍待つ。 このオブジェクトは、フォーム要素の現在値を取り出すために、ライブラリ内部で使われる関数を提供します。 このクラスは、ある要素の値(もしくは派生クラスが定義するプロパティ)が変更されるまでその要素を監視するような他のクラスの基底クラスとして使われます。 要素の入力値、スタイルプロパティのうちのひとつ、テーブル内の行数、など変更を追跡したいと思うものを監視するためのサブクラスを作ることができます。 値が変更されたことを報告するイベントを提供しない要素を含むフォームを監視する際にこのクラスを使います。 このクラスは、要素に値が変更されるイベントが発生した時にコールバック関数が実行されるような他のクラスの基底クラスとして使われます。 フォーム中の各データ入力要素のイベントにオブジェクト自身を関連づけるために、オブジェクトから呼び出されます。 値の変更を検出するために、フォームのデータ入力要素の関連づけられたイベントに対してコールバック関数を実行する 要素の値の変更を検出するのに要素のイベントを使い、フォーム中に含まれる全てのデータ入力要素の変更を監視する 返される値は、二番目の矩形が十分大きいとして幅や高さが重なっている(最初の矩形からみた)割合となる。 訳註: 翻訳上の勘違い、ミスなどの責任はにありますので、改善点などありましたらお知らせください。原文における問題点などは下記の通り Sergio に直接メールを送ってあげてください。 |
プロミスのサイトです。