最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS OOP包機(jī)制,類創(chuàng)建的方法定義

 更新時(shí)間:2009年11月02日 13:17:58   作者:  
JS OOP包機(jī)制,類創(chuàng)建的方法定義,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:

/**
* 定義包
* @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;
};


復(fù)制代碼 代碼如下:

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


/**
* 驗(yàn)證類是否存在
* @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 ;
};

/**
* 模擬類的定義 , 支持包機(jī)制,繼承和多態(tài)
* @param packageName {String} 包的名字
* @param className {String} 類的名字
* @param superClass {Class} 父類對象
* @param classImp {Object} 類的實(shí)現(xiàn)代碼
* @param isOverride {Boolean} 是否覆蓋,當(dāng)類定義存在時(shí),缺省不覆蓋
*
* @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 ;
} ;
//定義基類, 用于框架中所創(chuàng)建的類的基類.
Core.Class.create(SYS_DEF_CLASS_NS,'XClass',Object,{
'version': 'V0.1'
});

// Xu.Core.Class 測試區(qū)域
//測試 類覆蓋定義 ;
//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

相關(guān)文章

最新評論

望江县| 宜阳县| 吴江市| 江源县| 杭锦旗| 肃北| 和田市| 襄城县| 弥渡县| 织金县| 阜阳市| 陇南市| 波密县| 当雄县| 陵水| 尉犁县| 惠来县| 罗田县| 凤山县| 镇沅| 丹巴县| 循化| 犍为县| 淮南市| 周至县| 驻马店市| 集贤县| 杭州市| 韩城市| 顺平县| 平阳县| 衡南县| 英吉沙县| 夏津县| 于都县| 永昌县| 开原市| 石狮市| 乐亭县| 林甸县| 客服|