名前空間
ActionScriptで、aaa.bbb.Cccというクラスを定義するには、
_global["aaa"] = new Object();
_global["aaa"]["bbb"] = new Object();
_global["aaa"]["bbb"]["Ccc"] = function(){};
のようにします。そうすると
c = new aaa.bbb.Ccc();
でオブジェクトを作成できます。
これを汎用的に定義したのがseasar.lang.SObject#defineClazzです。
seasar.lang.SObject.defineClazz = function(className, constructorFunc) { var cn_array = className.split("."); var num = cn_array.length - 1; var package = _global; for (var i = 0; i < num; ++i) { if (package[cn_array[i] ] == null ) { package[cn_array[i] ] = new Object(); } package = package[cn_array[i] ]; } if (constructorFunc != null) { package[cn_array[num] ] = constructorFunc; } else { package[cn_array[num] ] = function() { super(arguments); } } return package[cn_array[num] ]; }