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かはてブコメントにて。