javascript中关于this指向问题详解
? 前 ?言
LiuDaP
在前端的學習中,我們必然要用到js,js可以說是前端必不可少的的東西。在學習js的過程中,我們會經常用到this這個東西,而this的指向問題就變得尤為重要。今天正好有空閑時間,就給大家詳細介紹一下js中關于this的指向問題,希望能夠幫助到大家。
?
| 一、this的指向原理 |
>>>僅僅一條就是:誰最終調用函數,this就指向誰。。
下面給大家做一下詳細的解釋:
(1)、this到底指向誰,不應該考慮函數在哪聲明,而是應該考慮函數在什么地方調用
(2)、this指向的永遠只可能是對象,而不是函數。
(3)、this指向的對象,叫做函數的上下文,也叫函數的content,還叫函數的調用者。
?
| 二、總結幾條關于this指向問題的規律 |
>>>注意:以下幾條規律特別好用,如果必要的話可以直接背過。
1、通過函數名()調用的函數,this永遠指向window。
具體例子如下:
1 function func(){ 2 this.name="wangwu"; 3 console.log(this); 4 } 5 func(); //通過func()調用的,this永遠指向window。
?
>>>以下代碼直接通過func()調用函數,則this指向window對象。
2、函數作為window內置函數的回掉函數使用,this指向window。例如:setInterval setTimeout等。
具體例子如下:
1 function func(){ 2 this.name="wangwu"; 3 console.log(this); 4 } 5 //函數作為window內置函數的回掉函數使用,this指向window。 6 setTimeout(func,1000);
>>>以上代碼,func直接作為setTimeout的回掉函數使用,則this指向window對象。
3、通過對象.方法調用函數,則this指向這個對象。
具體例子如下:
1 function func(){ 2 this.name="wangwu"; 3 console.log(this); 4 } 5 var obj={ 6 name:"zhangsan", 7 func:func 8 } 9 //通過對象.方法調用的,this指向這個對象 10 obj.func(); //狹義對象,指向obj。
>>>以上代碼,通過obj.func()進行調用,this指向這個obj。
? 4、函數作為數組中的一個元素,用數組下標進行調用的,this指向這個數組
具體例子如下:
1 function func(){ 2 this.name="wangwu"; 3 console.log(this); 4 } 5 var arr=[1,2,3,func,4,5,6]; //此時函數作為數組中第四個元素 6 arr[3](); //直接用數組的下標調用函數,此時this指向arr。
>>>以上代碼,func作為數組arr中的元素,通過arr[3]()進行調用,this指向arr
? 5、函數作為一個構造函數,使用new關鍵字進行調用,this指向用new關鍵字new出的對象。
具體例子如下:
function func(){this.name="wangwu";console.log(this);
}
var obj=new func(); //此時通過new關鍵字進行調用,this指向obj這個新new出的對象 >>>以上代碼,通過new關鍵字進行函數的調用,最終this指向這個新new出的對象
? this的指向問題,最終的內容就是這么多,雖然看起來很簡單,但是真正遇到問題的時候也會有讓人為難的時候。
?
編者按
我們都是在這條路上奔跑著的孩子,讓我們相互學習,共同努力吧!!!希望今天這點兒關于js中this指向問題的小內容對大家有一點點幫助吧,,畢竟我也是一個初入江湖的小菜鳥啊!!
轉載于:https://www.cnblogs.com/interesting-me/p/7670042.html
總結
以上是生活随笔為你收集整理的javascript中关于this指向问题详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《长相思·九月西风兴》第十一句是什么
- 下一篇: 在mybatis中模糊查询有三种写法