/**
* 定義パッケージ
* @param {} ns
* @return {}
*/
Xu .pkg = function(ns) {
if (!ns || !ns.length) {
return null;
}
var level = ns.split("."); >var nsobj = Xu;
for (var i = (levels[0] == "Xu") ? 1 : 0; i nsobj[levels[i]] = nsobj[レベル[i]] || {};
nsobj[レベル[i]]
戻り値
};
コードをコピー
/**
* クラスが存在するかどうかを確認します
* @param {String} Class
* @return {Boolean}
*/
Core.Class.isExist = function(Class){
if (Core.Util. isFunction(Class))
return true ;
return false>}
Core.Class.remove = function(Class){
if (Core.Class.isExist(クラス))
Xu.pkg(Class.prototype.__pkg__)[Class.prototype.__class__] = null ;
Core.Class.hasProperty = function(Class,property){
if (Core.Class.isExist(Class))
if (Class[プロパティ] || Class.prototype[プロパティ])
return true ;
return false ;
/**
* シミュレーション クラス定義、パッケージ メカニズム、継承、ポリモーフィズムをサポート
* @param packageName {String} パッケージの名前
* @param className {String} クラスの名前
* @ param superClass {Class} 親クラスのオブジェクト
* @param classImp {Object} クラスの実装コード
* @param isOverride {Boolean} クラス定義が存在する場合、デフォルトでは上書きされません。 >*
* @return {関数}
*/
Core.Class.create = function(packageName,className,superClass,classImp,isOverride){
if (Core.Util.isNull(className) || className === " "){
return null ;
isOverride = isOverride ||
var $this_class = eval(packageName "." className );
if (Core.Class.isExist($this_class)) {
trace( "isExist: " className " Override:" isOverride );
if (!isOverride){
return null ;
}
}
}
catch(e){
//例外が発生した場合は、クラスが定義されていないことを意味します
}
if ( Core.Util.isNull(packageName) | packageName === ""){
packageName = USER_DEF_CLASS_NS ;
$this_pkg = Xu.pkg(packageName);
if (Core.Util.isNull(superClass) || superClass === ""){
// superClass = Object ; .Class.Sys.XClass ;
}
//クラスを定義
$this_class = $this_pkg[className] = function(){};
// サブクラスのプロトタイプを指定します属性継承を取得するために親クラスにコピーします
$ this_class.prototype = new superClass();
Object.extend($this_class.prototype ,
{
'__pkg__': packageName ,
' __superclass__': $this_class.prototype['__class__'] || 'Object',
'__class__': className ,
'toString': function(){
return "[class: " this.__pkg__ "." this.__class__ "]" ;
}
}
);
$this_class.prototype(
$this_class.prototype,classImp);
}
return $this_class ;
} ;
フレームワークで作成されたクラスの基本クラスを定義します。 .create(SYS_DEF_CLASS_NS,'XClass' ,Object,{
'version': 'V0.1'
});
// Xu.Core.Class テスト領域
//テストクラスのカバレッジ定義;
//Core.Class.create(SYS_DEF_CLASS_NS,'XClass',Object,{
// 'version': 'V0.5'
//},true); 🎜>//
/ /// テストクラスのプロパティチェックメソッド;
//Xu.Class.Sys.XClass.ve = '2' ;
//trace(Core.Class.hasProperty(Xu) .Class.Sys.XClass,' ve'));
//
////Core.Class.remove(Xu.Class.Sys.XClass); var x_class = 新しい Xu.Class. //
//var XClass_ = Core.Class.create(null,'XClass_',{h:'hello'});
//var x_class_ = new XClass_ ();
//trace(x_class_.toString() x_class_.version );
//traceobj('XClass_',XClass_.prototype); ///
//var X_ = Core.Class.create(null,'X_',XClass_,null);
////
//var x_ = new X_(); >//trace(x_.toString() x_.version );
//traceobj('X_',X_.prototype);
テストに使用します、笑/...
作者: vb2005xu