不過雖 " /> 把腿张开老子CAO烂你动态图,在线观看成年人免费视频,99久久网站

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

獲取JavaScript用戶自定義類的類名稱的代碼

我們知道,雖然JavaScript是基于對象(object-based)的語言。但是使用其原形(prototype)特性,我們完全可以實現十分sexy的OO編成框架,這個可以看看經典論壇的文章'基本上實現 Javascript 的 OOP (0423版)'。

    不過雖然我們實現了'類'這種概念,可是JavaScript的腳本系統卻仍然是不認賬的。我們并沒有辦法使用腳本系統中的typeof方法獲取自定義類的類型,比如'類'JSClass定義如下:

 function JSClass()
 {
    this.Attribute1 = null;
    this.Attribute2 = null;

    this.Method1 = function()
    {
       // ...
    };

    this.Method2 = function()
    {
       // ...
    };

    this.toString = function()
    {
       return '[class JSClass]';
    };
 }
    我們生成一個它的實例:var jsclass = new JSClass();
    可是如果使用alert(typeof(jsclass)),我們只能得到'object'。而是用alert(jsclass),我們卻得到'[class JSClass]',這是對象實例默認調用toString()方法的結果。當然我們可以把類名稱"JSClass"使用toString()方法來返回,不過這種依賴手動type來保證正確性的方法并不時很理想。

    于是我們從類定義本身去想辦法,由于JavaScript中的對象(Object)默認都實現了toString()方法,而且函數對象(Function)的toString()方法就是返回該函數的定義本身,這樣我們就可以通過處理類定義來獲取類名了。

    我們通過對象實例的constructor屬性,可以獲取其構造函數的定義,而構造函數的名字也就是JavaScript用戶自定義類的類名稱。對于上面的例子,執行 var strFun = jaclass.constructor.toString(),strFun就是構造函數的原始語句定義(和上面語句塊內容相同)的字符串。我們從strFun中取出"函數名"(類名)就行了,可是這里需要注意。Function類的實例執行toString()時并不會格式化代碼,比如我們把JSClass的構造函數寫成如下格式:

function
   JSClass
   (
   )
{
   this.Attribute1 = null;
   this.Attribute2 = null;
   // ...
}
    執行toString()后的strFun里代碼也是這個樣子。

    所以獲取類名還需要特別的小心,方法__typeof__的代碼如下:

 function __typeof__(objClass)
 {
     if ( objClass && objClass.constructor )
     {
         var strFun = objClass.constructor.toString();
         var className = strFun.substr(0, strFun.indexOf('('));
         className = className.replace('function', '');
         return className.replace(/(^/s*)|(/s*$)/ig, '');  
     }
     return typeof(objClass);
 }

    示例:

<script language="Javascript">
alert(__typeof__(jsclass));
alert(__typeof__(JSClass));
alert(__typeof__(1));
alert(__typeof__([]));
alert(__typeof__({}));
</script>
    結果分別為:"JSClass", "Function", "Number", "Array"和"Object"。

    這里需要注意兩個地方,一是:jsclass和JSClass的區別,jsclass是類實例,而JSClass返回類型卻是Function哦;第二個是如果是系統類型,使用typeof得到的類型都是小寫的,比如number、array或objece啥的,而使用__typeof__獲得的類型名稱是和其類型名匹配的,首字母都大寫。

JavaScript技術獲取JavaScript用戶自定義類的類名稱的代碼,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲一卡二卡三卡四卡无卡麻豆 | 日韩欧美精品有码在线播放免费 | 理论片午午伦夜理片影院 | 天天影视色欲 影视 | 日本激情在线 | 秋霞久久久久久一区二区 | 亚洲欧美日韩精品久久奇米色影视 | 纯肉巨黄H爆粗口男男分卷阅读 | 色欲AV精品人妻一二三区 | 91精品国产色综合久久不 | 曰本老头同性xxxxx | 国产精华av午夜在线观看 | 中文字幕专区高清在线观看 | 免费视频精品38 | 精品久久免费观看 | 麻豆成人久久精品二区三区网站 | 精品国产在线观看福利 | 精品国产麻豆AV无码 | 亚洲精品乱码一区二区三区 | 妈妈的朋友5在线观看免费完整版中文 | qvod快播在线观看 | 成人毛片在线播放 | 琪琪色原网站ying | 亚洲视频中文字幕在线观看 | 公主纯肉高H文 | 秋霞电影午夜伦午夜 | 成人国产精品玖玖热色欲 | 国产在线精品亚洲视频在线 | 97一期涩涩97片久久久久久久 | 色噜噜狠狠色综合中文字幕 | 青青草原在线新免费 | 亚洲日本欧美国产在线视 | 大桥未久与黑人中出视频 | 国产精品午夜小视频观看 | a一级毛片视频免费看 | 9420高清完整版在线电影免费观看 | 亚洲 综合 自拍 精品 在线 | 久久中文字幕无码A片不卡 久久中文字幕人妻熟AV女蜜柚M | 无人影院在线播放 | 人妻免费久久久久久久了 | 久久综合色一综合色88中文 |