欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 中級筆記 第三章

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

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

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

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

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

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

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

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

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

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

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

在setBodyColor函數(shù)中,apply的第二個參數(shù)是數(shù)組,而前面我們講過,arguments 也是一個偽數(shù)組,那么它們2個能聯(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)資料,需要的朋友可以參考下
    2017-05-05
  • JavaScript中如何使用cookie實現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)介紹

    JavaScript中如何使用cookie實現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)介紹

    cookie是網(wǎng)站設計者放置在客戶端(瀏覽器)的小文本文件,cookie不僅能夠?qū)崿F(xiàn)保存密碼功能,還可以通過cookie保存最近瀏覽記錄增加用戶體驗。本文給大家介紹js使用cookie實現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)講解,感興趣的朋友一起看看吧
    2016-11-11
  • ES6 十大特性簡介

    ES6 十大特性簡介

    這篇文章主要介紹了ES6 十大特性的相關(guān)資料,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2020-12-12
  • 關(guān)于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法

    關(guān)于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法

    下面小編就為大家?guī)硪黄P(guān)于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 理解Javascript文件動態(tài)加載

    理解Javascript文件動態(tài)加載

    這篇文章主要幫助大家理解Javascript文件動態(tài)加載,解決了Javascript文件動態(tài)加載時出現(xiàn)的錯誤,感興趣的小伙伴們可以參考一下
    2016-01-01
  • js實現(xiàn)登錄彈框

    js實現(xiàn)登錄彈框

    這篇文章主要為大家詳細介紹了js實現(xiàn)登錄彈框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JSONP跨域請求

    JSONP跨域請求

    本文主要介紹了jsonp跨域請求的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • BetterScroll 在移動端滾動場景的應用

    BetterScroll 在移動端滾動場景的應用

    BetterScroll 是一款重點解決移動端各種滾動場景需求的開源插件( GitHub地址 ),非常不錯,下面腳本之家小編給大家分享BetterScroll 在移動端滾動場景的應用,一起看看吧
    2017-09-09
  • javascript定義變量時帶var與不帶var的區(qū)別分析

    javascript定義變量時帶var與不帶var的區(qū)別分析

    這篇文章主要介紹了javascript定義變量時帶var與不帶var的區(qū)別,以一個簡單實例分析了變量定義時帶var與不帶var的執(zhí)行原理及用法區(qū)別,需要的朋友可以參考下
    2015-01-01
  • 淺談js中function的參數(shù)默認值

    淺談js中function的參數(shù)默認值

    下面小編就為大家?guī)硪黄獪\談js中function的參數(shù)默認值。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論