最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript的閉包

 更新時(shí)間:2009年12月31日 02:46:07   作者:  
所謂“閉包”,指的是一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該表達(dá)式的一部分。

簡(jiǎn)介
Closure
所謂“閉包”,指的是一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該表達(dá)式的一部分。
閉包是 ECMAScript (JavaScript)最強(qiáng)大的特性之一,但用好閉包的前提是必須理解閉包。閉包的創(chuàng)建相對(duì)容易,人們甚至?xí)诓唤?jīng)意間創(chuàng)建閉包,但這些無意創(chuàng)建的閉包卻存在潛在的危害,尤其是在比較常見的瀏覽器環(huán)境下。如果想要揚(yáng)長(zhǎng)避短地使用閉包這一特性,則必須了解它們的工作機(jī)制。而閉包工作機(jī)制的實(shí)現(xiàn)很大程度上有賴于標(biāo)識(shí)符(或者說對(duì)象屬性)解析過程中作用域的角色。

關(guān)于閉包,最簡(jiǎn)單的描述就是 ECMAScript 允許使用內(nèi)部函數(shù)--即函數(shù)定義和函數(shù)表達(dá)式位于另一個(gè)函數(shù)的函數(shù)體內(nèi)。而且,這些內(nèi)部函數(shù)可以訪問它們所在的外部函數(shù)中聲明的所有局部變量、參數(shù)和聲明的其他內(nèi)部函數(shù)。當(dāng)其中一個(gè)這樣的內(nèi)部函數(shù)在包含它們的外部函數(shù)之外被調(diào)用時(shí),就會(huì)形成閉包。也就是說,內(nèi)部函數(shù)會(huì)在外部函數(shù)返回后被執(zhí)行。而當(dāng)這個(gè)內(nèi)部函數(shù)執(zhí)行時(shí),它仍然必需訪問其外部函數(shù)的局部變量、參數(shù)以及其他內(nèi)部函數(shù)。這些局部變量、參數(shù)和函數(shù)聲明(最初時(shí))的值是外部函數(shù)返回時(shí)的值,但也會(huì)受到內(nèi)部函數(shù)的影響。

遺憾的是,要適當(dāng)?shù)乩斫忾]包就必須理解閉包背后運(yùn)行的機(jī)制,以及許多相關(guān)的技術(shù)細(xì)節(jié)。雖然本文的前半部分并沒有涉及 ECMA 262 規(guī)范指定的某些算法,但仍然有許多無法回避或簡(jiǎn)化的內(nèi)容。對(duì)于個(gè)別熟悉對(duì)象屬性名解析的人來說,可以跳過相關(guān)的內(nèi)容,但是除非你對(duì)閉包也非常熟悉,否則最好是不要跳過下面幾節(jié)。

對(duì)象屬性名解析
ECMAScript 認(rèn)可兩類對(duì)象:原生(Native)對(duì)象和宿主(Host)對(duì)象,其中宿主對(duì)象包含一個(gè)被稱為內(nèi)置對(duì)象的原生對(duì)象的子類(ECMA 262 3rd Ed Section 4.3)。原生對(duì)象屬于語言,而宿主對(duì)象由環(huán)境提供,比如說可能是文檔對(duì)象、DOM 等類似的對(duì)象。

原生對(duì)象具有松散和動(dòng)態(tài)的命名屬性(對(duì)于某些實(shí)現(xiàn)的內(nèi)置對(duì)象子類別而言,動(dòng)態(tài)性是受限的--但這不是太大的問題)。對(duì)象的命名屬性用于保存值,該值可以是指向另一個(gè)對(duì)象(Objects)的引用(在這個(gè)意義上說,函數(shù)也是對(duì)象),也可以是一些基本的數(shù)據(jù)類型,比如:String、Number、Boolean、Null 或 Undefined。其中比較特殊的是 Undefined 類型,因?yàn)榭梢越o對(duì)象的屬性指定一個(gè) Undefined 類型的值,而不會(huì)刪除對(duì)象的相應(yīng)屬性。而且,該屬性只是保存著 undefined 值。

下面簡(jiǎn)要介紹一下如何設(shè)置和讀取對(duì)象的屬性值,并最大程度地體現(xiàn)相應(yīng)的內(nèi)部細(xì)節(jié)。

值的賦予
對(duì)象的命名屬性可以通過為該命名屬性賦值來創(chuàng)建,或重新賦值。即,對(duì)于:

var objectRef = new Object(); //創(chuàng)建一個(gè)普通的 javascript 對(duì)象。
可以通過下面語句來創(chuàng)建名為 “testNumber” 的屬性:

objectRef.testNumber = 5;
/* - 或- */
objectRef["testNumber"] = 5;
在賦值之前,對(duì)象中沒有“testNumber” 屬性,但在賦值后,則創(chuàng)建一個(gè)屬性。之后的任何賦值語句都不需要再創(chuàng)建這個(gè)屬性,而只會(huì)重新設(shè)置它的值:

objectRef.testNumber = 8;
/* - 或- */
objectRef["testNumber"] = 8;
稍后我們會(huì)介紹,Javascript 對(duì)象都有原型(prototypes)屬性,而這些原型本身也是對(duì)象,因而也可以帶有命名的屬性。但是,原型對(duì)象命名屬性的作用并不體現(xiàn)在賦值階段。同樣,在將值賦給其命名屬性時(shí),如果對(duì)象沒有該屬性則會(huì)創(chuàng)建該命名屬性,否則會(huì)重設(shè)該屬性的值。

更詳細(xì)的請(qǐng)查看下面的文章:
http://demo.jb51.net/js/javascript_bibao/index.htm

相關(guān)文章

  • 手把手教你uniapp和uview2.0實(shí)現(xiàn)表單校驗(yàn)實(shí)戰(zhàn)

    手把手教你uniapp和uview2.0實(shí)現(xiàn)表單校驗(yàn)實(shí)戰(zhàn)

    表單提交對(duì)大家來說應(yīng)該都不陌生,這是個(gè)很常見的功能,這篇文章主要給大家介紹了關(guān)于手把手教你uniapp和uview2.0實(shí)現(xiàn)表單校驗(yàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • JavaScript實(shí)現(xiàn)查找字符串中第一個(gè)不重復(fù)的字符

    JavaScript實(shí)現(xiàn)查找字符串中第一個(gè)不重復(fù)的字符

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)查找字符串中第一個(gè)不重復(fù)的字符,需要的朋友可以參考下
    2014-12-12
  • 小程序中設(shè)置緩存過期的實(shí)現(xiàn)方法

    小程序中設(shè)置緩存過期的實(shí)現(xiàn)方法

    這篇文章主要介紹了小程序中設(shè)置緩存過期的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • js 基礎(chǔ)篇必看(點(diǎn)擊事件輪播圖的簡(jiǎn)單實(shí)現(xiàn))

    js 基礎(chǔ)篇必看(點(diǎn)擊事件輪播圖的簡(jiǎn)單實(shí)現(xiàn))

    下面小編就為大家?guī)硪黄猨s 基礎(chǔ)篇必看(點(diǎn)擊事件輪播圖的簡(jiǎn)單實(shí)現(xiàn))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • 前端webpack一些常用配置的作用詳解

    前端webpack一些常用配置的作用詳解

    在前端開發(fā)中Webpack已經(jīng)成為構(gòu)建現(xiàn)代JavaScript應(yīng)用的必備工具,它負(fù)責(zé)模塊的打包和優(yōu)化,這篇文章主要介紹了前端webpack一些常用配置的作用,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • JavaScript判斷變量是否為數(shù)組的方法(Array)

    JavaScript判斷變量是否為數(shù)組的方法(Array)

    這篇文章主要介紹了JavaScript判斷變量是否為數(shù)組的方法(Array),涉及到j(luò)avascript 數(shù)組 變量相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • 動(dòng)態(tài)生成的IFRAME,設(shè)置SRC時(shí)的問題解決分析

    動(dòng)態(tài)生成的IFRAME,設(shè)置SRC時(shí)的問題解決分析

    動(dòng)態(tài)生成的IFRAME,設(shè)置SRC時(shí)的,不同位置帶來的影響。 以下所說的是在IE7下運(yùn)行的。IE6下也是同樣。 在這個(gè)blog中,直接點(diǎn)擊運(yùn)行代碼,和把下面代碼保存到為網(wǎng)頁在運(yùn)行(以本地文件或域名訪問),效果不一樣。 先看例子:
    2008-04-04
  • JavaScript 中使用Promise.all()方法經(jīng)驗(yàn)技巧詳解

    JavaScript 中使用Promise.all()方法經(jīng)驗(yàn)技巧詳解

    這篇文章主要為大家介紹了JavaScript 中使用Promise.all()方法經(jīng)驗(yàn)技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • uni-app中renderjs使用的方式淺析

    uni-app中renderjs使用的方式淺析

    renderjs是一個(gè)運(yùn)行在視圖層的js,它只支持app-vue和h5,下面這篇文章主要給大家介紹了關(guān)于uni-app中renderjs使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 詳解javascript函數(shù)的參數(shù)

    詳解javascript函數(shù)的參數(shù)

    javascript函數(shù)可以用任意多個(gè)參數(shù)來調(diào)用,而不用管函數(shù)定義時(shí)指定了幾個(gè)參數(shù)。因?yàn)楹瘮?shù)是弱類型的,沒有方法去聲明它所期望的參數(shù)類型,并且給任何函數(shù)傳遞任何類型的值都是合法的
    2015-11-11

最新評(píng)論

尉犁县| 成都市| 南通市| 吉隆县| 揭阳市| 康乐县| 仁寿县| 永定县| 阿坝县| 达日县| 固阳县| 东辽县| 棋牌| 澄江县| 通道| 四会市| 五河县| 新河县| 永胜县| 罗定市| 财经| 小金县| 永吉县| 定结县| 汝阳县| 灵武市| 青州市| 屯昌县| 闻喜县| 翁牛特旗| 南投市| 迁安市| 河间市| 图木舒克市| 浙江省| 绍兴市| 长兴县| 涿鹿县| 隆尧县| 武山县| 江阴市|