Category:
Web
パッケージに紐付けてクラスを登録するための関数 package を作ってみた。
クラスをパッケージ内に定義するには、例えば
もっと大規模なスクリプトで使うと盛大に重いかもしれないな。まぁ、お遊び程度のモノということで。
それにしても、オブジェクト指向な JavaScript は初めて書いたけど、結構楽しい。
function package(name, objects) {やっていることは、渡されたパッケージ名の各階層を(もし存在しなければ)順に宣言して、さらに渡された class (function) をそのパッケージに追加していく、という作業だけです。
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];
}
}
クラスをパッケージ内に定義するには、例えば
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