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

JavaScript 中級筆記 第三章

 更新時(shí)間:2009年09月14日 13:26:04   作者:  
接著(2)來講。筆記(2)已經(jīng)講了引用和函數(shù)重載,接下來講解作用域。
3,作用域
所有的面向?qū)ο蟮恼Z言都有某種形式的作用域,JavaScript也不例外。在JavaScript里,作用域是由函數(shù)劃分的,而不是由塊(while,if之類的)來劃分的。
我們先來看一個(gè)簡單的作用域的例子。

在if塊中,雖然foo的值改為“b“,但還是在全局作用域中,所以輸出結(jié)果是“b“。
基于瀏覽器的JavaScript語言有一門有趣的特性是,所有屬于全局作用域的變量都是window對象的屬性。
看下面代碼:

我們再上例的基礎(chǔ)上,再添加一個(gè)函數(shù)來修改foo的值,代碼如下:

結(jié)果也許有點(diǎn)另你意外,不過結(jié)果肯定是正確的。代碼②的結(jié)果是輸出 "b",而不是"c"。原因就是作用域有關(guān),雖然調(diào)用change()來改變foo的值,但是此時(shí)的改變只
在函數(shù)作用域內(nèi)起作用,并不會(huì)改變?nèi)肿饔糜騼?nèi)的foo的值。
如果想在change()函數(shù)內(nèi)修改全局的foo的值,我們可以去掉變量的聲明,例如:

在JavaScript中,如果變量沒有顯式定義,它就是全局定義的。所以調(diào)用change()后,會(huì)修改全局foo的值。最終輸出"c" 。
4,上下文對象
在JavaScript中,代碼總是有一個(gè)上下文對象,代碼處于該對象之內(nèi)。上下文對象是通過this變量來體現(xiàn)的。這個(gè)變量永遠(yuǎn)指向當(dāng)前代碼所處的對象中。
全局對象其實(shí)是window對象的屬性。
接下來,我們看一個(gè)上下文對象的例子。

再此基礎(chǔ)上,我們再看一個(gè)例子:

本例中,我們把obj.hide變量的上下文對象變?yōu)閣indow對象時(shí),代碼寫得并不好理解。幸運(yùn)的是,JavaScript提供了一套更好的方法來解決。
現(xiàn)在我們有請call和apply兩位先生上場,通過它們也可以完成同樣的功能。先看call:

通過obj.hide.call(window),我們將此時(shí)的上下文對象改為window對象。call方法的第一個(gè)參數(shù)就是上下文對象。
call方法也可以傳遞更多的參數(shù),如下所示:

另外apply方法跟call類型,它的第一個(gè)參數(shù)也是上下文對象,不過后面的參數(shù)則是一個(gè)數(shù)組。如下所示:

最后我們來看一個(gè)通過上下文,call和apply結(jié)合的例子。

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

在setBodyColor函數(shù)中,apply的第二個(gè)參數(shù)是數(shù)組,而前面我們講過,arguments 也是一個(gè)偽數(shù)組,那么它們2個(gè)能聯(lián)系起來嗎?
把 changeColor.apply( document.body , ["blue"]); 改為 changeColor.apply( document.body , arguments );,
然后給setBodyColor();函數(shù)傳參數(shù)。如下代碼所示:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

通過這些例子,你也許對上下文的概念比較熟悉了。上下文在面向?qū)ο蟮木幊讨蟹浅V匾?

相關(guān)文章

  • JavaScript實(shí)現(xiàn)多種排序算法

    JavaScript實(shí)現(xiàn)多種排序算法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)多種排序算法的相關(guān)資料,包括冒泡排序、插入排序、選擇排序等,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳

    JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳

    這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)將圖片地址轉(zhuǎn)成文件流并上傳,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • js實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接的方法

    js實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接的方法

    這篇文章主要介紹了js如何實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接,需要的朋友可以參考下
    2014-02-02
  • 高效的jquery數(shù)字滾動(dòng)特效

    高效的jquery數(shù)字滾動(dòng)特效

    這篇文章主要介紹了高效的jquery數(shù)字滾動(dòng)特效,靈活的進(jìn)行數(shù)字滾動(dòng),感興趣的小伙伴們可以參考一下
    2015-12-12
  • JS不完全國際化&本地化手冊 之 理論篇

    JS不完全國際化&本地化手冊 之 理論篇

    最近加入到新項(xiàng)目組負(fù)責(zé)前端技術(shù)預(yù)研和選型,其中涉及到一個(gè)熟悉又陌生的需求——國際化&本地化。熟悉的是之前的項(xiàng)目也玩過,陌生的是之前的實(shí)現(xiàn)僅僅停留在"有"的階段而已。趁著這個(gè)機(jī)會(huì)好好學(xué)習(xí)整理一下,為后面的技術(shù)選型做準(zhǔn)備
    2016-09-09
  • 微信小程序?qū)崿F(xiàn)貪吃蛇游戲

    微信小程序?qū)崿F(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • js Canvas繪制圓形時(shí)鐘效果

    js Canvas繪制圓形時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了js Canvas繪制圓形時(shí)鐘效果的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 光標(biāo)的一些操作總結(jié)

    光標(biāo)的一些操作總結(jié)

    IE下的Range操作比Mozilla下強(qiáng)很多,這里只討論IE下的操作,這里選介紹幾個(gè)光標(biāo)定位的特點(diǎn)
    2006-10-10
  • 微信小程序?qū)崿F(xiàn)登錄頁面

    微信小程序?qū)崿F(xiàn)登錄頁面

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)登錄頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • js中最容易被忽視的事件問題大總結(jié)

    js中最容易被忽視的事件問題大總結(jié)

    下面小編就為大家?guī)硪黄猨s中最容易被忽視的事件問題大總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-05-05

最新評論

衡南县| 屯昌县| 瓦房店市| 两当县| 溆浦县| 拜城县| 清徐县| 松溪县| 漠河县| 阿勒泰市| 舟山市| 仙游县| 保山市| 图片| 鄂托克旗| 旅游| 夹江县| 和硕县| 惠东县| 龙江县| 蓬莱市| 两当县| 奉化市| 泽库县| 宽甸| 辛集市| 南部县| 沁水县| 淳安县| 郓城县| 茶陵县| 绩溪县| 兴山县| 湖州市| 富蕴县| 佛学| 西宁市| 巨鹿县| 新巴尔虎左旗| 平昌县| 响水县|