/** * */ function class__Common__(window) { { // private変数 var CODE_TABLE = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; /** * */ Object.privateId = function() { var r = ""; for (var i = 0, k = CODE_TABLE.length; i < 8; i++) r += CODE_TABLE.charAt(Math.floor(k * Math.random())); return r; }; } { // クラス名抽出 var CLASS_NAME_PATTERN = new RegExp("class__(\\w+)__"); /** * */ Object.getClassName = function(f) { return f.toString().match(CLASS_NAME_PATTERN)[1]; }; } { // onloadリスナー初期化等 var $loaded = Object.privateId(); var $onloadListeners = Object.privateId(); window[$loaded] = false; window[$onloadListeners] = new Array(0); /** * */ window.isLoaded = function() { return window[$loaded]; }; /** * */ window.addOnloadListener = function(listener) { if (typeof listener != "function") return void 0; var l = window[$onloadListeners]; l[l.length] = listener; }; /** * */ window.removeOnloadListener = function(listener) { if (typeof listener != "function") return void 0; var l = window[$onloadListeners]; for (var i = 0; i < l.length; i++) { if (l[i] == listener) { l[i] = null; return true; } } return false; }; window.onload = function() { window[$loaded] = true; var l = window[$onloadListeners]; for (var i = 0; i < l.length; i++) if (Boolean(l[i])) l[i](); }; } { // 継承 /** * 継承. * Prototype Function#inherit(Function superClass) * クラスメンバは継承されない. * @param superClass 継承元クラス(関数). * @return 自分自身のprototypeオブジェクト. */ Function.prototype.inherit = function(superClass) { function Temp() {} Temp.prototype = superClass.prototype; return this.prototype = new Temp; }; } } class__Common__(window);