400-650-7353
您所在的位置:首頁 > IT干貨資料 > web前端 > 【W(wǎng)eb前端基礎(chǔ)知識】Js中this的指向指的什么

【W(wǎng)eb前端基礎(chǔ)知識】Js中this的指向指的什么

  • 發(fā)布: Web前端培訓(xùn)
  • 來源:Web前端干貨資料
  • 2020-03-18 18:33:29
  • 閱讀()
  • 分享
  • 手機端入口

JavaScript中this的存在為我們寫代碼提供了非常多的幫助,但是在具體使用的時候this的具體指向會變得各不相同,在本篇文章中,我們將詳細(xì)討論this的指向機制

首先我們要明確一個概念,this既不是指向當(dāng)前函數(shù),也不是某個固定的對象,而是函數(shù)在執(zhí)行時的環(huán)境對象。也就是是說,函數(shù)內(nèi)this的指向只和函數(shù)是如何被調(diào)用的有關(guān),和函數(shù)的定義方式以及位置等沒有必然的聯(lián)系。

1. 最普通的函數(shù)調(diào)用

上述案例中,我們可以認(rèn)為全局函數(shù)demo是頂層對象window的方法,所以可以認(rèn)為是window在調(diào)用demo函數(shù),所以其中的this指向的是window對象。

  1. function demo(){ 
  2. console.log(this); 
  3. demo(); 

2. 對象方法中的this

在上面這個案例中,執(zhí)行的雖然也是demo函數(shù),但是在我們是通過obj對象對demo函數(shù)的引用訪問到demo函數(shù)的,所以可以認(rèn)為是obj對象在調(diào)用函數(shù)demo,函數(shù)內(nèi)this的this就要指向obj對象。

  1. function demo(){ 
  2. console.log(this); 
  3. var obj = { 
  4. foo:demo 
  5. obj.foo(); 

3. 定時器中的this

在第一個定時器中,通過定時器執(zhí)行函數(shù)demo時,可以依然認(rèn)為demo是全局對象window的方法,所以是window對象在調(diào)用demo函數(shù),所以this依然指向window。而第二個定時器中是一個匿名函數(shù),一般匿名函數(shù)的執(zhí)行具有全局性,也就是可以認(rèn)為匿名函數(shù)是是在全局環(huán)境中被調(diào)用的,那么該定時器函數(shù)內(nèi)的this就指向了全局環(huán)境對象window。

  1. function demo(){ 
  2. console.log(this); 
  3. setTimeout(demo,1000); 
  4. setTimeout(function(){ 
  5. console.log(this); 
  6. },2000); 

文章“【W(wǎng)eb前端基礎(chǔ)知識】Js中this的指向指的什么”已幫助

>>本文地址:http://liujunjsxg.cn/zhuanye/2020/48500.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個方向的工作?

獲取測試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營銷互聯(lián)網(wǎng)營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內(nèi)設(shè)計室內(nèi)設(shè)計
  • 平面設(shè)計平面設(shè)計
  • 電商設(shè)計電商設(shè)計
  • 網(wǎng)頁設(shè)計網(wǎng)頁設(shè)計
  • 全鏈路UI/UE設(shè)計UI設(shè)計
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發(fā)智能機器人
 

快速通道fast track

近期開班時間TIME