Js全局和局部變量_this關鍵字_《沒有控件的ASPDONET》

一、全局變量和局部變量
  我們可以簡單的這樣來看瀏覽器對js的使用:
  
瀏覽器接收到服務器發過來的代碼後,會解釋生成一棵 存在於瀏覽器緩存中的 Dom樹。
同時爲了方便程序員通過js代碼來控制瀏覽器操作,也提供了一個名爲window的對象,這個對象中有兩個很重要的部分:
  
一個就是document,它中間包含了一些能夠操作dom樹的方法,能讓程序員方便的訪問和修改dom樹從而控制界面的現實。
  
其二就是js全局成員,這個其實就是指的爲window添加屬性。通俗的說,window就是我們js運行的全局環境,平時我們在<script>標籤中定義 全局變量 其實就是在爲window添加屬性。
  
但值得注意的是,就算是在方法{}中定義變量,如果沒有使用var關鍵字來聲明的話,那這個變量不會成爲方法的局部變量,而是也會作爲全局變量添加到window對象中。所以,儘管平時我們定義變量可以省略var,但爲了避免不小心出現這個問題,還是都寫上var關鍵字吧。
二、this關鍵字

每個方法都包含兩個內部屬性,其中一個就是this

平時我們編寫C#Java代碼時,都在類中使用過this關鍵字,它在這兩種高級語言中保存了當前類正在運行的對象的引用。
  
js中,this引用的是函數據以執行操作的對象,也就是 函數在執行時所處的作用域(通俗:就是哪個對象.出了這個函數,那麼函數裏的this就代表哪個對象)
  但因爲js的弱類型機制及函數本身就是一個Function對象實例的原因,使得一個函數的調用者可以在運行時由一個切換到另一個。

看看下面這個例子:
var color = "blue";  //
定義一個全局變量 color,相當於 window.color= "blue"

var o = { color: "red" };  //定義一個全局變量 o,相當於 window.o={ color: "red" }
  //
//定義一個全局變量(方法)sayColor,相當於window. sayColor =function(){alert(this.color); }

    function sayColor() {

       alert(this.color);

    }

sayColor(); //輸出blue.相當於window.sayColor();
//
因此,此時sayColor中的this代表window.所以this.color=window.color


o.sayColor = sayColor; //
此時將sayColor的函數指針賦值給o對象的屬性sayColor

o.sayColor(); //那麼此時sayColor裏的this代表的是o,所以this.color=o.color="red"

 

三、thisprototype
未完待續......太困了...... L O L

 

轉載請註明出處:鄒華棟 Js全局和局部變量_this關鍵字 開智網 http://www.oumind.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章