長話短說 之 js的原型和閉包

來源:互聯網
上載者:User

標籤:win   調用   數組   type   匿名函數   this   function   query   檢測   

原型鏈:undefined, number, string, boolean 屬於簡單的實值型別,函數、數組、對象、null、new obj()都是參考型別。檢測實值型別用typeof x 即可,檢測參考型別obj instanceof object 是否為true。

那你發現function 和 object 有什麼區別呢? 大名鼎鼎的jquery 竟然是個function  typeof $=>function 。其實對象是通過函數建立的。

每個函數都有一個原型prototype,每個對象都有一個__proto__,所謂的原型鏈就是:訪問一個對象的屬性時,__proto__屬性中尋找,如果沒有,再沿著__proto__這條鏈向上找到prototype,這就是原型鏈。

fn.__proto__===Fn.prototype;

this ,取何值,是在函數真正被調用執行的時候確定的。可以記住三種情況:

  1. 在全域函數中this等於window
  2. 當函數被當做某個對象的方法調用時,this等於那個對象
  3. 匿名函數的執行環境具有全域性,this通常指向window

自由變數,要到建立這個函數的那個範圍中取值。

閉包,它的最大用處有兩個,一個是可以讀取函數內部的變數,另一個就是讓這些變數的值始終保持在記憶體中。好好理解這句話,閉包的原理是不是恍然大悟。應用情況無非就是兩種:

函數作為傳回值;函數作為參數傳遞。

 

長話短說 之 js的原型和閉包

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.