Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Web
パッケージに紐付けてクラスを登録するための関数 package を作ってみた。
function package(name, objects) {
var names = name.split(".");
for (var i = 0; i < names.length; i++) {
var pkg = names.slice(0, i + 1).join(".");
eval("if (typeof " + pkg + " == 'undefined') {" + pkg + " = {};}");
}
eval("var o = " + name);
for (var obj in objects) {
o[obj] = objects[obj];
}
}
やっていることは、渡されたパッケージ名の各階層を(もし存在しなければ)順に宣言して、さらに渡された class (function) をそのパッケージに追加していく、という作業だけです。

クラスをパッケージ内に定義するには、例えば
package("com.kenichimaehashi.blog.example", {
MyFirstClass: function() {
this.showMessage = function() {
alert("Hello, world!");
};
},

MySecondClass: function(yourName) {
this.yourName = yourName;
this.showMessage = function() {
alert("Hello, " + this.yourName + "!");
};
}
});
のようにする。で、これらのクラスを使ったアプリケーションは
var firstApp = new com.kenichimaehashi.blog.example.MyFirstClass();
firstApp.showMessage();
// --> Hello, world! と表示される

var secondApp = new com.kenichimaehashi.blog.example.MySecondClass("Kenichi");
secondApp.showMessage();
// --> Hello, Kenichi! と表示される
って感じ。

もっと大規模なスクリプトで使うと盛大に重いかもしれないな。まぁ、お遊び程度のモノということで。
それにしても、オブジェクト指向な JavaScript は初めて書いたけど、結構楽しい。

Comments

Leave Yours...
Name:
E-mail / URL (optional):
Comment:
Are You Robot?: