略談javascript中的this

來源:互聯網
上載者:User

  按照周愛明對語言分類的理論,javascript既有命令式語言中的物件導向特性,又有說明式語言中的函數式特性。這些特性交織在一起往往容易把人繞暈。所以,為了提高js水平,頭腦中javascript的這些特性一定要條例清晰。今天先來看看貌似簡單的this。

  this是物件導向編程中一個非常重要的特性。在傳統物件導向語言(如java)中,this的作用一般是調用本類中的屬性、方法或表示當前對象。而javascript中的this的值則取決於函數調用的模式。(註:在函數調用時,函數除了聲明時定義的形式參數外每個函數還接收兩個附加的參數this和arguments)。

  方法調用模式:this被綁定到該對象
  函數調用模式:this被綁定到全域對象。這是語言設計上的一個錯誤。倘若語言設計正確,當內建函式被調用時,this應該仍然綁定到外部函數的this變數。這個設計錯誤的後果是方法不能利用內建函式來協助它工作,因為內建函式的this被綁定了錯誤值,所以不能共用該方法對對象的訪問權。解決方案:在該方法中定義一個變數並給它賦值為this,那麼內建函式就可以通過那個變數訪問到this。
  構造器調用模式:如果在一個函數前面帶上new來調用,那麼將建立一個隱藏串連到該函數的prototype成員的新對象,同時this將被綁定到那個新對象上。

  apply調用模式:apply方法接收兩個參數,第一個將被綁定給this的值。第二個就是一個參數數組。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.