国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS OOP包機制,類創建的方法定義

2019-11-21 01:01:21
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

/**
* 定義包
* @param {} ns
* @return {}
*/
Xu.pkg = function(ns) {
if (!ns || !ns.length) {
return null;
}
var levels = ns.split(".");
var nsobj = Xu;
for (var i = (levels[0] == "Xu") ? 1 : 0; i < levels.length; ++i) {
nsobj[levels[i]] = nsobj[levels[i]] || {};
nsobj = nsobj[levels[i]];
}
return nsobj;
};


復制代碼 代碼如下:

// ------------------- Xu.Core.Class命名空間
Xu.pkg("Core.Class");
var SYS_DEF_CLASS_NS = 'Xu.Class.Sys' ;
var USER_DEF_CLASS_NS = 'Xu.Class.Custom' ;


/**
* 驗證類是否存在
* @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(Class))
Xu.pkg(Class.prototype.__pkg__)[Class.prototype.__class__] = null ;
};

Core.Class.hasProperty = function(Class,property){
if (Core.Class.isExist(Class))
if ( Class[property] || Class.prototype[property])
return true ;
return false ;
};

/**
* 模擬類的定義 , 支持包機制,繼承和多態
* @param packageName {String} 包的名字
* @param className {String} 類的名字
* @param superClass {Class} 父類對象
* @param classImp {Object} 類的實現代碼
* @param isOverride {Boolean} 是否覆蓋,當類定義存在時,缺省不覆蓋
*
* @return {Function}
*/
Core.Class.create = function(packageName,className,superClass,classImp,isOverride){
if (Core.Util.isNull(className) || className === ""){
return null ;
}

isOverride = isOverride || false ;
try {
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 ;
superClass = Xu.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__ + "]" ;
}
}
);
if (Core.Util.isObject(classImp)){
$this_class.prototype = Object.extend(
$this_class.prototype,classImp);
}
return $this_class ;
} ;
//定義基類, 用于框架中所創建的類的基類.
Core.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 = new Xu.Class.Sys.XClass();
//trace(x_class.toString() + x_class.version );
//traceobj('XClass',Xu.Class.Sys.XClass.prototype);
////
//var XClass_ = Core.Class.create(null,'XClass_',null,{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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 库伦旗| 三江| 通州区| 普兰县| 垫江县| 安丘市| 利川市| 宜阳县| 滨海县| 伊通| 疏附县| 丽江市| 郧西县| 巍山| 通渭县| 洛宁县| 宜宾县| 牡丹江市| 中西区| 神池县| 萍乡市| 龙南县| 宜城市| 全南县| 江阴市| 青阳县| 邵武市| 交口县| 印江| 中牟县| 大田县| 克拉玛依市| 绥江县| 万荣县| 郑州市| 游戏| 高邑县| 延安市| 天水市| 葫芦岛市| 通许县|