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函式
- lua非全域性函式函式
- 在vue專案中 如何定義全域性變數 全域性函式Vue變數函式
- PHP 到底該怎麼定義全域性函式?PHP函式
- laravel 自定義全域性函式Laravel函式
- 匿名自執行函式的引數為什麼是window和undefined函式Undefined
- 為什麼Vue.mixin中的定義的data全域性可用Vue
- JS 中的函式 this 指向總結JS函式
- (轉發)連結串列新增函式中為什麼要用指向連結串列指標的指標(引用傳參)函式指標
- node 全域性物件和全域性變數物件變數
- Js全域性物件JS物件
- C/C++—— 寫一個函式,它的引數為指向函式的指標,返回型別也為指向函式的指標C++函式指標型別
- yaf框架載入全域性公共函式框架函式
- Jscript中window.setInterval和window.setTimeout區別JS
- 超全域性陣列有哪些?超全域性陣列有什麼作用?陣列
- Promise為什麼比setTimeout先執行?Promise
- 面試官:為什麼 Promise 比setTimeout() 快?面試Promise
- 為什麼在pyhton中不能用函式重新賦值函式賦值
- 【JavaScript】徹底明白this在函式中的指向JavaScript函式
- javascript:建構函式模式(為什麼這種方式也可以建立物件)JavaScript函式模式物件
- 海外HTTP代理中全域性代理和區域性代理是什麼?有什麼區別?HTTP
- PHP 全域性使用 Laravel 輔助函式 ddPHPLaravel函式
- window.onload()函式和jQuery中的document.ready()有什麼區別?函式jQuery
- 指向函式的指標函式指標
- Servlet中利用全域性物件提高效能!!!Servlet物件
- Python中函式為什麼可以當做引數使用?Python函式
- 為什麼 Python 程式碼在函式中執行得更快?Python函式
- bind( )介面卡(Adapter) -- 呼叫全域性函式及成員函式APT函式
- vue 全域性函式的 定義與任意呼叫Vue函式
- 【譯】JavaScript中純函式是什麼JavaScript函式
- 為什麼 Go 裡值為 nil 可以呼叫函式?Go函式
- C/C++——指向函式的指標和指向函式的指標的陣列C++函式指標陣列
- 為什麼Redux 需要 reducers是純函式?Redux函式
- 箭頭函式this指向的陷阱函式
- 箭頭函式this指向詳解函式