js中this指向有幾種情況
在JavaScript中呼叫函式使用的過程中,this關鍵詞會根據函式的呼叫形式不同,引用上下文的物件也是不同的,也就是說this關鍵詞指向的物件是可以改變的。本文整理了this關鍵詞五種情況下,指向物件的不同。
情況一:全域性作用域或者普通函式自執行中this指向全域性物件window
console.log(this.document === document); //true console.log(this === window); //true this.a = 37; // 相當於建立了一個全域性變數 a console.log(window.a); //37
情況二:事件函式內部的this指向事件源
function f1(){ return this; } //在瀏覽器中: f1() === window; //在瀏覽器中,全域性物件是window //在Node中: f1() === global;
注意:事件函式中如果包含普通函式,普通函式自執行後,內部this還是指向window。
情況三:物件方法呼叫時,this指向呼叫的物件
let obj = { attr1: 3, func1: function() { console.log(this === obj) // 輸出:true console.log(this.attr1) // 輸出:3 } } obj.func1()
情況四:當一個函式被call或者apply呼叫時,this指向傳入的物件的值
let obj = { fn: function(){ console.log(this); } } obj.fn(); //objobj.fn.call(12); //12
情況五:箭頭函式中自身沒有this,this指向上級的this
const xiaoming = { name: '小明', say() { //this指向當前物件 console.log(this) }, wait() { setTimeout( () => { //this指向當前物件 console.log(this) }, 1000) } }
以上就是JavaScript中this指向的幾種清空,需要注意的是在各個場景中this取什麼值是在函式執行的時候確定的,不是在函式定義的時候決定的哦·更多JavaScript學習推薦:。
(推薦作業系統:win7系統、java10版,DELL G3電腦。)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2370/viewspace-2831095/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js中bool值為false的幾種情況JSFalse
- js引起記憶體洩露的幾種情況分析JS記憶體洩露
- DreamWeaver中應用CSS樣式表的幾種情況CSS
- [zt] Oracle不使用索引的幾種情況Oracle索引
- Scrum 中經常遇到的幾種 Burndown Chart 燃盡圖情況Scrum
- Js中this指向JS
- 簡單介紹MySQL索引失效的幾種情況MySql索引
- Asp.net 2.0 Session 丟失的幾種情況ASP.NETSession
- JS獲取元素寬高的兩種情況JS
- js中的this指向JS
- MySQL主從不同步的幾種情況總結MySql
- NoClassDefFoundError的兩種情況Error
- 異常、堆記憶體溢位、OOM的幾種情況記憶體溢位OOM
- AWR收集緩慢、掛起的幾種常見情況分析
- JS中this指向的更改JS
- JS中 this 到底指向誰?JS
- eclipse 專案gradle無反應的幾種特殊情況EclipseGradle
- JSON資料交換格式有幾種?JSON
- 呼叫layoutSubviews各種情況分析View
- 【機制】js中的this指向JS
- js函式中的this指向JS函式
- js中this的指向問題JS
- js中建立物件的幾種方式JS物件
- undo表空間出現問題的幾種情況與處理
- 深入分析幾種PHP獲取客戶端IP的情況轉PHP客戶端
- 產生遞迴呼叫 (Recursive Call 或 recursive SQL statements) 的幾種情況遞迴SQL
- js中什麼情況下返回值是undefinedJSUndefined
- 多種情況解析深複製
- js中修改this的指向方法整理JS
- 徹底理解 JS 中 this 的指向JS
- 徹底理解js中this的指向JS
- [摘譯]js記憶體洩漏常見的四種情況JS記憶體
- [css佈局1]不知寬高情況下,水平垂直居中的幾種方式CSS
- file_put_contents失敗,返回false的幾種情況和解決方案False
- 用瀏覽器測試幾種閉包占用記憶體的情況瀏覽器記憶體
- h3c埠匯聚的幾種情況-S5500-S5048
- JS中建立函式的幾種方式JS函式
- js中建立物件的幾種常用方式JS物件