這篇文章主要介紹了JavaScript函數中this有哪些不同的指向,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于網站建設、成都網站制作、大冶網絡推廣、微信小程序開發(fā)、大冶網絡營銷、大冶企業(yè)策劃、大冶品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供大冶建站搭建服務,24小時服務熱線:13518219792,官方網址:www.cdcxhl.com
上下文和this關鍵字
在JavaScript中,函數有自己的執(zhí)行上下文,在這里要特別注意下函數的執(zhí)行上下文不是關于它是如何聲明的,也不是說函數的作用,而是關于如何在代碼中調用它,我們在調用此執(zhí)行上下文時就會用到this。當this從函數內部訪問時,實際上就是訪問其執(zhí)行上下文。
調用函數方式與this
上下文取決于函數的調用方式,我們可以通過4種不同的方式來調用上下文的函數,因此this也有四種不同的指向
1. 一個基本的函數調用
2. 使用上下文對象調用函數,也稱為隱式綁定。
3. 使用call()或調用函數apply(),也稱為顯式綁定。
4. 通過bind()方法綁定
基本函數調用
基本函數調用是調用函數的最簡單方法
例:
在這個例子中可以看出student()是從全局范圍內調用函數,因此這里的this指代的是全局范圍,所以輸出結果為“”張三“”
隱式綁定
當函數被一個對象“包含”的時候,我們稱函數的this被隱式綁定到這個對象里面了
obj函數雖然被放到對象里去但是并不會因為它被定義在對象的內部就會與外部產生區(qū)別,在隱式綁定下,obj通過this還是可以訪問到student對象中的a屬性
顯示綁定
可以使用call()或apply()方法調用函數,其執(zhí)行上下文顯式綁定到對象,call和apply可以改變this指向
例:未使用call ()或者apply()時
利用call()使this指向window
bind()綁定
bind()會創(chuàng)建一個函數,函數體內的this對象的值會被綁定到傳入bind()第一個參數的值,但是bind不執(zhí)行函數,只返回一個可供執(zhí)行的函數
通過bind方法將this指向c對象中的內容。
感謝你能夠認真閱讀完這篇文章,希望小編分享JavaScript函數中this有哪些不同的指向內容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!