setTimeout()函式中為什麼this指向全域性物件window
本章節介紹一下為什麼在某些場景下this會指向全域性的window物件。
當然this在setTimeout()中的指向並不是都是window物件,而是在一些情況下,看起來是指向某個物件,但實際上是指向window的,下面就通過程式碼例項分析一下此種情況,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var str="全域性"; var obj={ str:"物件", func:function(){ setTimeout(this.test,1000); }, test:function(){ console.log(this.str); } } obj.func()
上面程式碼的輸出結果是"全域性",這說明test函式中的this指向是全域性物件。
之所以這樣,是因為上面的程式碼等效於如下程式碼:
[JavaScript] 純文字檢視 複製程式碼var str="全域性"; var obj={ str:"物件", func:function(){ var done=this.test setTimeout(done,1000); }, test:function(){ console.log(this.str); } } obj.func()
相關文章
- call和apply第一個引數為null/undefined,函式this指向全域性物件APPNullUndefined函式物件
- setTimeout和箭頭函式巢狀中的this指向函式巢狀
- setTimeout中的this指向問題和箭頭函式結合的區別函式
- js函式中的this指向JS函式
- laravel 自定義全域性函式Laravel函式
- PHP 到底該怎麼定義全域性函式?PHP函式
- JS 中的函式 this 指向總結JS函式
- 關於setInterval和setTImeout中的this指向問題
- 為什麼Vue.mixin中的定義的data全域性可用Vue
- window.onload()函式和jQuery中的document.ready()有什麼區別?函式jQuery
- Promise為什麼比setTimeout先執行?Promise
- 【JavaScript】徹底明白this在函式中的指向JavaScript函式
- (轉發)連結串列新增函式中為什麼要用指向連結串列指標的指標(引用傳參)函式指標
- javascript:建構函式模式(為什麼這種方式也可以建立物件)JavaScript函式模式物件
- 超全域性陣列有哪些?超全域性陣列有什麼作用?陣列
- 面試官:為什麼 Promise 比setTimeout() 快?面試Promise
- 為什麼 Python 程式碼在函式中執行得更快?Python函式
- Python中函式為什麼可以當做引數使用?Python函式
- 執行緒join為什麼在解構函式中執行緒函式
- 為什麼在pyhton中不能用函式重新賦值函式賦值
- vue 全域性函式的 定義與任意呼叫Vue函式
- 海外HTTP代理中全域性代理和區域性代理是什麼?有什麼區別?HTTP
- constructor 未指向建構函式Struct函式
- 箭頭函式this指向詳解函式
- 箭頭函式this指向的陷阱函式
- 箭頭函式的this指向(二)函式
- 瀏覽器中window.length的結果是什麼?為什麼?瀏覽器
- C++中函式指標與函式物件C++函式指標物件
- Laravel-自定義全域性函式-ChinaCircle 優化版Laravel函式優化
- uniapp 全域性檢查登陸並跳轉函式APP函式
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- 為什麼Redux 需要 reducers是純函式?Redux函式
- 13、Node.js 全域性物件Node.js物件
- 為什麼 Go 裡值為 nil 可以呼叫函式?Go函式
- 【譯】JavaScript中純函式是什麼JavaScript函式
- 函式內部This的指向問題函式
- C++之類解構函式為什麼是虛擬函式C++函式
- c++中物件的引用作為函式的引數C++物件函式
- Vue(ES6)中的data屬性為什麼不能是一個物件?Vue物件