麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > JS > 正文

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

2024-09-06 12:43:07
字體:
來源:轉載
供稿:網友
我們知道,雖然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__的代碼如下:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: hd日本xxxx| 久久久久久久久国产精品 | 蜜桃传免费看片www 一本色道精品久久一区二区三区 | 黄污污网站 | 一级电影在线免费观看 | 精品国产99久久久久久宅男i | 亚洲一区二区三区91 | 情侣啪啪网站 | 国产一区二区在线观看视频 | 久久久精品视频在线观看 | 91午夜理伦私人影院 | 欧美成人黄色小视频 | 最近国产中文字幕 | 亚洲一级簧片 | 免费一级毛片在线播放视频 | 在线播放免费播放av片 | 精品国产91久久久久久 | 国产一级免费在线视频 | 涩涩激情网 | 九九热在线视频观看这里只有精品 | 蜜桃精品视频 | 亚洲精品久久久久www | 黄色特级毛片 | 欧美 日本 在线 | 毛片中文字幕 | 欧美色视频免费 | 噜噜噜影院| 欧美视频在线观看一区 | a黄色片 | 久久伊人国产精品 | 国产品久久 | 国产精品视频不卡 | 香蕉国产9 | 国产91在线播放九色 | 久久艹国产精品 | 黄色免费在线视频网站 | 国产精品毛片va一区二区三区 | 沉沦的校花奴性郑依婷c到失禁 | 午夜视频亚洲 | 超碰人人做人人爱 | 一区播放 |