1. 程式人生 > >javascript中this的指向

javascript中this的指向

span this 有時 變量 mage bsp 匿名函數 javascrip 生成

作為一個前端小白在開發中對於this的指向問題有時候總是會模糊,於是花時間研究了一番。

首先this是JS的關鍵字,this是js函數在運行是生成的一個內部對象,生成的這個this只能在函數內部使用。

但是隨著函數使用場合的不同,this的值會發生變化。有一個原則不會變,那就是this指的是,調用函數的那個對象。

demo1:

技術分享

此時函數運行的結果是 1 ,x是全局變量,因為匿名函數demo()是被window調用的,原始寫法是window.demo(),因為demo()是被window調用的,所以this指向window,此時的x是全局變量,指向的是調用函數demo()的window。

demo2:

技術分享

此時可以看到控制臺打印的結果分別是3,1,1。此時調用demo()的 是對象obj,遵循javascript中this的指向原則,測試this指向的是obj。在函數下面打印出來的y的值是1可以看出函數內部的this.y不是全局的,所以此時this指向的是調用demo()這個函數的對象。

demo3:

技術分享

此例中item是通過demo()函數生成的構造函數,這時的this指向和 上面 demo1的不同,此時this作為構造函數被調用的時候指向的是構造函數這個新的對象,因此控制臺打印出來的分別是1和2,全局變量x的值沒有被改變。

javascript中this的指向