feb19.jp blog - life is creative!

プロトタイプベースのクラス拡張

ブックマークに追加する tags:     

プロトタイプベースのクラス拡張

ActionScript1.0と2.0を見直したい。1.0と2.0は書き方は多少違えど、内部で同じ形式に変換してるわけだから、1.0で書かれているプロトタイプ拡張用.asファイルを#includeして使うなんて使い方ができるわけで。

すでにウェブ上には様々なプロトタイプの実装方法やらの議論がされているこの3.0全盛時代に1.0を見直してみる俺。とりあえず仕事が早く終わるように、締め切りに間に合うように、開いた時間を活用してライブラリで武装を整えておこうという魂胆です。2.0以下案件ばっかなんだし。てか1.0/2.0を見直してりゃ3.0なんて多分楽勝なんだ。きっと。

で、まず1.0。1.0はプロトタイプベースのクラス定義がおこなえるので(むしろこれまでなんだけど)、StringやMathやObject、MovieClipなどビルトインクラスにプロパティやメソッドをダイナミックに追加が可能。

たとえばこの間の配列をシャッフルするというメソッドを作る場合以下のような実装が可能。

Array.prototype.shuffle = function(){
	var l = this.length;
	var newArr = arr;
	while(l){
		m = Math.floor(Math.random()*l);
		n = newArr[--l];
		newArr[l] = newArr[m];
		newArr[m] = n;
	}
	return newArr;
}

こうすると、arr.shuffle();だけでシャッフルされた配列が戻ってくる。上の関数をコピペして好きな名前で保存する。例えば"feb19array.as"なんて名前で作成したとする。このとき、上記コードはAS1.0だけども、AS2.0で作られたプロジェクトの.flaファイルの1フレーム目にinclude "feb19array.as"と記述する。そうすると、AS2.0上でこの拡張メソッドを利用する事が可能。

とはいえこの方法は直接ビルトインクラスを拡張しているので非常に危険です。一人で作業を行っている分には全然良いのですが、複数人数で汚染し合ってしまう可能性があったり、また読みにくくなっていってしまうという事も。

そこでおすすめなのが前回説明した方法であって、static publicと重ねる事で、ExArray.shuffle(arr)とする方法。コードの汚染を極力押さえる事が可能です。

つまりこのエントリーはあまりよくない例っていうことなのです。。

2007年08月18日12:22

Webデザインブログ

「プロトタイプベースのクラス拡張」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/86

Navigation

古:Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート
新:Flashで作られたユーザーインターフェースと使い勝手
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...