亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Javascript Context和Scope的學(xué)習(xí)總結(jié)02【轉(zhuǎn)自cnblogs的JKhuang】

Aldous / 1238人閱讀

摘要:總結(jié)本博文通過(guò)介紹執(zhí)行上下文和作用域的異同的使用以及變量對(duì)象,讓我們加深對(duì)語(yǔ)言特性的理解。首先,我們介紹了執(zhí)行上下文和的的關(guān)系,并且執(zhí)行上下文是具有對(duì)象的然后,介紹了作用域使變量在作用域范圍內(nèi)可見(jiàn),并且作用域是基于函數(shù)的。

接上一篇Javascript Context和Scope的學(xué)習(xí)總結(jié)01【轉(zhuǎn)自cnblogs的JKhuang】(可能是segmentfault對(duì)單篇文章發(fā)布字?jǐn)?shù)有限制,也沒(méi)有提示,繼續(xù)編輯chrome就會(huì)崩潰)

使用作用域解決上下文問(wèn)題

接下來(lái),繼續(xù)看一個(gè)例子,我們要在函數(shù)setTimeout()中調(diào)用方法onTimeout(),具體定義如下:

/**
 * setTimeout function with Broken Context issue
 * @type {Object}
 */
var o = {
    x:23,
    onTimeout: function(){
        console.log("x:", this.x);
    },
    m: function(){
        setTimeout(function(){
            this.onTimeout(); // ERROR: this.onTimeout is not a function
        }, 1);
    }
}
o.m();

同樣在函數(shù)setTimeout()中調(diào)用方法onTimeout()失敗,我們知道這是由于方法onTimeout()不能獲取對(duì)象執(zhí)行上下文。

我們知道在方法m()中可以獲取對(duì)象執(zhí)行上下文,所以可以通過(guò)臨時(shí)變量引用this指向的對(duì)象,實(shí)例代碼如下:

/**
 * Fixs setTimeout function with Broken Context issue.
 * @type {Object}
 */
var o = {
    x:23,
    onTimeout: function(){
        console.log("x:", this.x); // outputs 23
    },
    m: function(){
        
        // Keeps instance reference.
        var self = this;
        setTimeout(function(){
           // Gets m scrope. 
            self.onTimeout();
        }, 1);
    }
}
o.m();

上面,我們通過(guò)臨時(shí)變量self保存了this的引用,由于setTimeout()函數(shù)可以獲取m()的作用域,所用我們可以通過(guò)self. onTimeout()的方式調(diào)用onTimeout()方法。

總結(jié)

本博文通過(guò)介紹執(zhí)行上下文和作用域的異同、this的使用以及變量對(duì)象,讓我們加深對(duì)Javascript 語(yǔ)言特性的理解。

首先,我們介紹了執(zhí)行上下文和this的的關(guān)系,并且執(zhí)行上下文是具有對(duì)象的;然后,介紹了作用域使變量在作用域范圍內(nèi)可見(jiàn),并且作用域是基于函數(shù)的。

我們通過(guò)具體的例子介紹了在不同的作用域和執(zhí)行上下文中,對(duì)this和變量的影響加深了作用域和執(zhí)行上下文的理解,從而幫助我們更好的閱讀和編寫(xiě)代碼。

參考

http://blog.goddyzhao.me/post...

http://clubajax.org/javascrip...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88097.html

相關(guān)文章

  • Javascript ContextScope學(xué)習(xí)總結(jié)01【轉(zhuǎn)自cnblogsJKhuang

    摘要:正文執(zhí)行環(huán)境也稱(chēng)為環(huán)境是中最為重要的一個(gè)概念。執(zhí)行環(huán)境定義了變量或函數(shù)有權(quán)訪問(wèn)的其他數(shù)據(jù),決定了它們各自的行為。簡(jiǎn)而言之,執(zhí)行環(huán)境是基于對(duì)象的,而作用域是基于函數(shù)的。 前述 在我們學(xué)習(xí)Javascript過(guò)程中,常常會(huì)遇到作用域(Scope)和執(zhí)行上下文(Context)等概念。其中,執(zhí)行上下文與this關(guān)鍵字的關(guān)系密切。 有面向?qū)ο缶幊探?jīng)驗(yàn)的各位,對(duì)于this關(guān)鍵字再熟悉不過(guò)了,因此...

    April 評(píng)論0 收藏0
  • Javascript this 一些學(xué)習(xí)總結(jié)02轉(zhuǎn)自cnblogsJKhuang

    摘要:發(fā)生這種情況的條件是當(dāng)引用類(lèi)型值的對(duì)象恰好為活躍對(duì)象。總結(jié)本文介紹中的使用,更重要的是幫助我們能更好地理解值在全局函數(shù)構(gòu)造函數(shù)以及一些特例的情況中值的變化。然而,由于對(duì)于來(lái)說(shuō)沒(méi)有任何意義,因此會(huì)隱式轉(zhuǎn)換為全局對(duì)象。 接上一篇Javascript this 的一些學(xué)習(xí)總結(jié)02【轉(zhuǎn)自cnblogs的JKhuang】 引用類(lèi)型以及this的null值 對(duì)于前面提及的情形,還有例外的情況,當(dāng)調(diào)...

    suemi 評(píng)論0 收藏0
  • Javascript this 一些學(xué)習(xí)總結(jié)01【轉(zhuǎn)自cnblogsJKhuang

    摘要:函數(shù)上下文中的值是函數(shù)調(diào)用者提供并且由當(dāng)前調(diào)用表達(dá)式的形式而定的。然而,由于對(duì)于來(lái)說(shuō)沒(méi)有任何意義,因此會(huì)隱式轉(zhuǎn)換為全局對(duì)象。這里注意到四個(gè)表達(dá)式中,只有第一個(gè)表達(dá)式是指向?qū)ο蟮?,而其他三個(gè)表達(dá)式則執(zhí)行。 摘要 相信有C++、C#或Java等編程經(jīng)驗(yàn)的各位,對(duì)于this關(guān)鍵字再熟悉不過(guò)了。由于Javascript是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它和C++、C#或Java一樣都包含this關(guān)鍵字...

    Thanatos 評(píng)論0 收藏0
  • javascript作用域,作用域鏈,[[scope]]屬性

    摘要:正式由于作用域鏈的這種關(guān)系,我們就不難理解,為什么和不能通過(guò)作用域鏈向上搜索,因?yàn)閷?duì)和的搜索在當(dāng)前執(zhí)行函數(shù)的活動(dòng)對(duì)象就停止了。 對(duì)于Javascript程序員來(lái)說(shuō),閉包總會(huì)讓你覺(jué)得既熟悉又陌生,然而它對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)卻非常重要,javascript里的許多設(shè)計(jì)模式中都用到了閉包,此處以函數(shù)作用域?yàn)槔?//示例代碼 var a=1; function foo(){ ...

    pkhope 評(píng)論0 收藏0
  • JavaScript閉包

    摘要:此時(shí)的作用域鏈包含了兩個(gè)對(duì)象的活動(dòng)對(duì)象和對(duì)象。閉包的應(yīng)用場(chǎng)景保護(hù)函數(shù)內(nèi)的變量安全。依然如前例,由于閉包,函數(shù)中的一直存在于內(nèi)存中,因此每次執(zhí)行,都會(huì)給自加。 引子 JS的閉包一直是很多人不理解,也是在使用過(guò)程中經(jīng)常出現(xiàn)問(wèn)題的地方。每次看文章都會(huì)有所了解閉包,但是,用起來(lái)還是不對(duì),而且錯(cuò)誤百出,其關(guān)鍵問(wèn)題還是出在對(duì)其不理解,不了解。此文章會(huì)不定期更新以及完善,希望在我學(xué)習(xí)的時(shí)候,讓大家也...

    Tony 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<