<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    令人驚奇的JavaScript面向對象(二)

    昨天談了作用域的問題,現在讓我們看看作用域在JavaScript的面向對象特性中是怎么表現的,其中會涉及到上下文的問題,這個也是我們需要好好去理解的。

    學習JavaScript面向特性的朋友可能會迷惑于JavaScript中所謂類聲明的方式。類似以下代碼:

    function WhatIam() {
    alert('I'm here');
    }

    你可以用它來聲明一個變量:

    test = new WhatIam();

    或者像函數一樣調用它:

    WhatIam();

    這時候我們完全puzzled了,它究竟是個什么東西? 我只能說,它是一個特殊的又讓人頭痛的東西。但是不要緊,只要我們能看清它是怎樣運作的,不怕它是神還是鬼。

    可能你在上面的代碼運行情況中看不出當一個function用來聲明變量和作為函數調用,它除了返回值之外還有什么不同。但是通過接下來的一些例子,相信你會對這兩種用法會有更加深入的理解。

    首 先說說為什么一個function可以像類一樣來聲明一個變量?我是這樣理解的:任何function都是一個構造函數,你不需要定義類,而當你聲明 function的時候,實際上已經在定義一個類了。這樣看來,用function定義出來的函數實際上就是一個類的構造函數了。

    =================這里觀摩一種神奇現象===================


    關于這個構造函數我必須跟大家說明一種情況,在上一篇文章中我曾提到,在函數中聲明的變量,如果不加var關鍵字,那么它默認是一個全局變量(也即window對象下的一個屬性)。然而在這樣的構造函數中,卻存在一種特殊的情況(我至今都沒搞明白的神奇“失蹤”現象):

    function TestClass() {
    //你會發覺這是在定義一個全局變量
    val = 1;
    alert(val);
    //果然它是一個全局變量
    alert(window.val);
    };
    //調用TestClass構造函數
    test = new TestClass();
    //再次驗證是一個全局變量
    alert(val);

    運行結果并沒有什么不妥,一切都在意料之中。然而下面這段代碼的運行結果卻絕對讓你目瞪口呆:

    function TestClass() {
    //我認為我在定義一個全局變量
    val = 1;
    //正常顯示1
    alert(val);
    //居然是undefined!
    alert(window.val);
    //我僅僅是添加了以下代碼
    var val = 10;
    //顯示了10,這里比較好理解,就是局部變量作用域遮蓋了全局作用域
    alert(val);
    //依然是undefined
    alert(window.val);
    }
    //調用TestClass構造函數
    test = new TestClass();
    //確實是undefined
    alert(val);

    看到這里你是不是已經瘋狂了?我也是。最開始定義的val全局變量為何神奇失蹤?

    對于這種情況我也只是順帶提一下,希望引起大家注意,但是我并不能解釋為何出現這樣的現象,等待高人注解!!

    關于這個現象說一點我的看法就是:如果你聲明function的目的是定義一個類,就要盡量擯棄在其中使用全局變量的做法,這樣就可以避免上述現象的發生。

    posted on 2008-07-23 21:31 Jarod.cn.LuLuLife 閱讀(183) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    我的知識Blog!

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    Image

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲精品免费视频播放| 在线免费视频一区二区| 亚洲综合色婷婷七月丁香| 国产精品亚洲а∨无码播放不卡| 免费观看AV片在线播放| 亚洲国产成人99精品激情在线| 最近免费中文在线视频| 亚洲一区二区三区久久| 丁香花免费完整高清观看| 亚洲制服丝袜第一页| 成人毛片免费播放| 国产精品亚洲片在线花蝴蝶| 少妇亚洲免费精品| 97超高清在线观看免费视频| 亚洲不卡中文字幕无码| 99久久免费看国产精品| 亚洲精品在线视频观看| 成人毛片免费网站| 成年免费大片黄在线观看com| 久久久久久A亚洲欧洲AV冫| 久久成人免费大片| 亚洲中文字幕无码av永久| 免费中文字幕在线| 免费无码又爽又刺激高潮软件| 97亚洲熟妇自偷自拍另类图片| 免费福利网站在线观看| 免费观看亚洲人成网站| 亚洲不卡中文字幕无码| 久久精品a一国产成人免费网站 | 中文字幕无码视频手机免费看 | 日本精品人妻无码免费大全| 亚洲国产欧美日韩精品一区二区三区 | 亚洲中文无码mv| 亚洲无码高清在线观看| 18未年禁止免费观看| 亚洲成在人线aⅴ免费毛片| 亚洲av永久无码精品秋霞电影影院| 青青在线久青草免费观看| 免费又黄又爽又猛大片午夜| 亚洲伦理一区二区| 又粗又硬免费毛片|