最新国产好看的视频,伊人天堂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} 父類對(duì)象
* @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){
//如果出異常,說(shuō)明該類沒(méi)有定義
}

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 測(cè)試區(qū)域
//測(cè)試 類覆蓋定義 ;
//Core.Class.create(SYS_DEF_CLASS_NS,'XClass',Object,{
// 'version': 'V0.5'
//},true);
//
//// 測(cè)試 類屬性檢查方法 ;
//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);

測(cè)試使用的,呵呵 /...
作者:vb2005xu

相關(guān)文章

最新評(píng)論

威信县| 临澧县| 赤水市| 炉霍县| 镇沅| 保康县| 涿州市| 长宁区| 扎赉特旗| 张家口市| 新巴尔虎左旗| 东丽区| 丽水市| 托里县| 电白县| 繁峙县| 甘孜县| 仪征市| 兰坪| 武乡县| 宁强县| 黄石市| 枞阳县| 阿合奇县| 阿图什市| 寿宁县| 岗巴县| 清镇市| 上虞市| 西安市| 沙河市| 柘荣县| 华蓥市| 综艺| 仙游县| 潜江市| 子洲县| 香港 | 石嘴山市| 札达县| 额济纳旗|