Node.js 模組和函數中「this」的意思
在Node.js 中,「this」的值可能會有所不同在使用它的上下文中。
模組範圍與函數作用域
-
模組作用域:在Node.js 模組內(由require() 載入) ,「this」指的是module.exports,它是一個空物件預設。
-
函數作用域:在函數內部,「this」指的是全域物件(嚴格模式除外)。
函數呼叫
- 函數中「this」的值取決於它的呼叫方式.
- 直接呼叫函數(例如aFunction())將「this」設定為全域物件在非嚴格模式下。
- 將函數當作方法呼叫(例如 obj.aFunction())會將「this」設定為物件實例。
- 使用bind()、call()或apply() 呼叫函數可讓您指定「this」值
注入的全域物件
- Node.js 將全域物件注入到函數作用域中的「this」中。
- 這是因為函數通常在沒有特定物件上下文的情況下呼叫。
- 但是,「this」不是注入到模組作用域中,因為模組包裝函數(由 Node.js 建立)明確地將「this」指派給 module.exports。
以上是'this” 關鍵字在 Node.js 模組和函數中的行為如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!