fc2ブログ

10 | 2007/11 |  12

  1. 無料サーバー

User forum-FC2BLOG-Info-Edit Template-Post-Edit-Upload-LogOut

CSSやJavascript自習の苦闘史を綴っていきたい。恐縮ですがJavascriptを有効にしてご覧ください。
2005年12月から社会問題も掲載!


jQuery()の挙動を解読する(4) init()メソッドにおけるjQuery固有の拡張されたプロパティとメソッドの相互呼応──jQuery解読(8)

extend()による拡張方法が分かったので、愈々個別の解読に進みたい。

これまでのエントリイで、(1)jQueryの全体の構造と特徴(2)jQueryグローバル変数の定立(3)コンストラクタ関数による初期化(4)インスタンスプロパティ・メソッドとクラスプロパティ・メソッド及び(5)extend()関数によるオブジェクトの拡張について、解読してきたつもりです。

これから先は、愈々これらの解読によるjQueryの理解を踏まえて先に進みます。基礎的な事項は一通り通過しましたので、愈々個別のコードを解明したい訳です。

But!。全体で2965行に及ぶjQuery.js(ver1.2.1 非圧縮版)の逐一の解読にはおそらく数年は掛かるでしょう。

何故ならば、本業の多忙さ故に毎日分析作業を行える訳でもないし、Javascriptに詳しいシステムエンジニアでもない一素人にとって、約3,000行のJavascriptコードの解読は、おいそれと登坂できてしまう山ではありません。まして大胆かつ無謀にも、Javascript界における最高峰の1つを極めようとしているのですから、一朝一夕の努力で山頂に到達できるはずもありません。

それでも一歩一歩先に、上に進もうと覚悟を決めている昨今ではあります。

▲ToTop

init()メソッドの分析のために

init()関数解読の道半ばであれこれの基本的問題に話題がそれてしまいました。init()関数の大枠については、こちらで詳述しましたので(jQueryインクルード時の挙動を追跡する(2) コンストラクタの初期化:init()──jQuery解読によるJavascript学習(5))、これ以降では各論に入ります。

init()関数の細部を理解するには、その中で呼び出される各種のjQuery固有の拡張されたメソッド及びプロパティのそれぞれを知る必要があります。init()で登場する固有のメソッド等は以下の通りで、僅か50行足らずの中に盛り沢山のメソッド等が登場します。しかもこれらのメソッドは幾重にも重層化されて利用されています。そこでその連関を表にしてみました。jQuery固有のメソッドやプロパティが init()メソッド内だけでも密接に相互に連関している様を、一目で分かるようにするためです。

<init()メソッドにおけるjQuery固有メソッドの連関表>
                呼出し元行 → 呼出され先行
│
├$.fn.init()..................................34-82行
│ ├$.clean().......................44行 → 765-854行
│ │ └$.each()...................769行 → 569-589行
│ │   ├$.trim()...............782行 → 911-913行
│ │   ├$.browser.msie.........820行 → 1017行
│ │   ├$.makeArray()..........840行 → 915-926行
│ │   ├$.nodeName()...........843行 → 505-507行
│ │   └$.merge()..............849行 → 935-950行
│ ├$().find()......................53行 → 225-229行
│ │ ├$.map()....................226行 → 987-1007行
│ │ ├$.find()...................226行 → 1224-1413行
│ │ │ ├$().trim()............1245行 → 911-913行
│ │ │ ├$().data()............1280行 → 511-531行
│ │ │ ├$().trim()............1296行 → 911-913行
│ │ │ ├$().merge()...........1310行 → 935-950行
│ │ │ ├$().isXMLDoc()........1339行 → 485-488行
│ │ │ ├$().merge()...........1362行 → 935-950行
│ │ │ ├$().classFilter().....1367行 → 1415-1424行
│ │ │ ├$().filter()..........1394行 → 258-266行
│ │ │ └$().trim()............1396行 → 911-913行
│ │ ├$().pushStack()............227行 → 102-106行
│ │ └$.unique().................228行 → 952-968行
│ │   └$.data()................957行 → 511-531行
│ ├$.isFunction()..................69行 → 479-482行
│ ├$().ready().....................70行 → 1925-1940行
│ │ ├bindReady()...............1927行 → 1990-2039行
│ │ └$.readyList...............1937行 → 1948行
│ ├$().load()......................70行 → 2041-2101行
│ │ ├$.isFunction()............2042行 → 479-482行
│ │ ├$.param().................2066行 → 2479-2504行
│ │ └$.ajax()..................2073行 → 2194-2422行
│ ├$().setArray()..................72行 → 108-112行
│ └$.makeArray()...................78行 → 915-926行
│

init()メソッド一つだけでも、jQuery.jsにより固有に定義されたこれだけのメソッドが連関しているわけで、自己拡張したメソッドやプロパティを縦横無尽に利活用して目的をゲットする──そんな貪欲な迄の"単純だがしかし無限に拡張出来るjQuery的欲望"が生き生きと展開されている、と言えるでしょう。

▲ToTop

init()メソッド解読手順

init()内で最初に登場するjQuery固有のメソッドはjQuery.clean()で、これはHTML要素を扱う場合に利用されています(44行)。jQuery.clean()本体は765-854行迄の約200行に亘る長~いコードで定義されていますが、実はその大半はクラスメソッドjQuery.each()です。ですから569-589行で定義されているjQuery.each()をまず解読しなければなりません。

更に上の表をみれば直ぐに分かるように、each()メソッド内には jQuery.trim()、jQuery.browser.msie、jQuery.makeArray()、jQuery.nodeName()、jQuery.merge()と続々と固有メソッドと固有プロパティが登場します。

従ってこれらについても順に解読していかなければ、jQuery.clean()メソッドは理解できないことになります。

これから先に続くエントリイは、init()メソッド解読を暫く連載するつもりです。

 90%近いシェアを握っているインターネットエクスプローラの描画エンジンを利用したタブbrowser。沢山のタブbrowserがあるが、多機能、カスタマイズフリー、スクリプト利用等で一日の長がある。Gekkoエンジンへの対応も行われ、IEからの自立独立の方向に向かっている。2005年7月にはIE7が登場する見通しの中で、今後の発展が望まれる。

 多様なCSS作成支援機能を備えた、タグ入力式 HTML&CSS作成支援エディタ。スキンデザインもすっきりしている。テキストエディター上で作成するよりも確実で安全にタグ打ちが出来る。
文字コードを選べないのが欠点。

 StyleNote同様のタグ入力式 HTML&CSS 作成支援エディタ。長年使用してきたが現在StyleNoteに乗り換えつつある。

 クリップボード履歴情報を活用する為のソフト。画像まで履歴を取ってくれるのが嬉しい。このソフトを使わない日は絶対ない程に重宝し、愛用している。

 起動中のウィンドウの「コピーできない」説明文などの文字列を取得し、コピー可能な文字データにするツール。何かと便利。

 ストリーミングデータを保存することが出来るソフト。動画利用には不可欠なソフトだ。

 無料ながらレイヤー機能を有し、スクリプトによる拡張も可能な、sleipnir作者が提供している優れもの画像編集ソフト。

 画面キャプチャソフトと言えばこれに勝るものなし、ではないだろうか? 様々な取得方法を有しており、ブログ作成にもHomepage作成に不可欠だ。Jtrimと並んでWoodyBellsの作品。

 複数ファイルの同時編集は出来ないが、透過pngも作れる画像編集ソフト。
(以下当該サイトから抜粋)初心者にも簡単に操作が出来るフォトレタッチソフトです。多くの加工機能で画像に様々な効果を与えることができます。非常に軽快に動作するため、ストレスなく操作できます。

 Animation Gifファイルを作れる無料ソフト。

 キャプチャソフト。画面内にサイト全体が表示しきれない場合でも、これを使えば全体をキャプチャすることが出来る。

 画像処理。画像のフォーマット変換のみならず、色数やサイズ、圧縮率の変更まで一括処理できてしまう『BatchGOO!』は、大量の画像をまとめて処理したいときに大変便利なソフト。BMP, TIFF, JPEG, PCX, PNG の相互変換をはじめ、色数・サイズ・解像度の統一、JPEG圧縮率の調節など、ホームページ用の画像や携帯電話用の壁紙を揃えるのに抜群の相性を見せる。(Vectorの当該ソフト紹介頁より抜粋引用)

 名前から直ぐに想像が付くように画像のサイズを測るためのソフトだ。Homepage作成には欠かせない。2カラム、3カラムのレイアウトを行う場合に大変重宝する。

 ランチャーソフトは沢山あるが、中でもこれが一押しだ。2年以上使ってきたがその操作性には毎日満足している。これを使い始めてからデスクトップには一切のアイコンを表示することをやめてしまった。

 AdobeReader7によって、起動時間が長すぎるという長年のユーザーの不満はある程度解消した。そのためこの高速化ソフトは存在価値が低下してしまったかもしれない。AdobeReader6迄はこのソフトによる起動高速化で恩恵を受けてきた。

 IE専用が難点だが、様々なサイト内でIDやパスワードを入力するのに重宝するソフト。コンテキストメニューから簡単に起動できるのがGood! sleipnir等のIEの描画エンジンを利用しているブラウザでも使える。

 利用しているパソコンの諸元値を取得するには、このソフトがベストだ。インストール済みソフトの一覧が取得できるのも嬉しい。

 WMPは機能が豊富なだけ重い。RealPlayerも同様だ。そこでMedia Player Classicを使いたい。動作が軽快なだけではなく、対応しているファイル形式もすこぶる多く、これひとつで、wmvもrmも表示できてしまうのだから凄い! 数多あるMedia Playerの王様と言えるだろう。

 自宅でPCを起動しているときには必ず起動しているメディアプレーヤー。何かと過剰なWinampよりも、起動も速くスキンはシンプルだ。

 DivX, Xvid, Mov, Vob, Mpeg, Mpeg4, avi, wmv, dv, などの動画をDVD-Video形式に変換できるフリーソフト。クリックするとDVD関連ソフト紹介サイト=「DVDなToolたち」なるHomepageが開きます。