Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
Javascriptは、プロトタイプベースのオブジェクト構文をサポートした、動的なスクリプティング言語です。Javascriptにはオブジェクトがあり、オブジェクトはデータとデータに作用するメソッド、さらには他のオブジェクトをも含むことができます。プロトタイプベースなJavascriptには、クラスベースなJavaやC++と違ってクラスがありません ...が、それに代わるものとしてコンストラクタが存在します。
オブジェクト指向を理解しておくと、DOMを扱う時に楽。
クラスの定義
function Image() {this.width = 0;this.height = 0;this.src = '';}Image.prototype.type = 'image object';Image.prototype.width = null;Image.prototype.height = null;Image.prototype.src = null;
前半はコンストラクタ関数。クラス生成時に一度だけ自動で実行される。そしてコンストラクタ関数の名前が、そのままクラス名になる。
後半はprototypeプロパティを使った初期値の設定。以後、このクラスの全てのインスタンスに継承される。
メソッドの定義
Image.prototype.resizeImg = function(newWidth, newHeight) {this.width = newWidth;this.height = newHeight;};
まとめて設定
以下のような書き方も可能。
Image.prototype = {type : 'image object',width : null,height : null,src : null,resizeImg : function(newWidth, newHeight) {...}};
オブジェクト生成例1
var objBody = document.getElementsByTagName("body").item(0);var objOverlay = document.createElement("div");objOverlay.setAttribute('id','overlay');objOverlay.style.display = 'none';objOverlay.onclick = function() { myLightbox.end(); return false; }objBody.appendChild(objOverlay);var objLightbox = document.createElement("div");objLightbox.setAttribute('id','lightbox');objLightbox.style.display = 'none';objBody.appendChild(objLightbox);
Lightbox JS v2.0からオブジェクトの生成部分を抜粋。実際使われているだけあって、この一連の操作は、かなり使える。
オブジェクト生成例2
insertImg = new Image();insertImg.src = imgSrc;insertImg.id = 'originalImg';imgContainer.appendChild(insertImg);
ごく単純な生成例。もともと定義されているImageクラスのクローンを生成し、値を与えている感じ。
コンストラクタの確認
if (aImage.constructor != Image) return;
aImageがImageクラスのインスタンスであるかどうか確認している。
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。