[英]Using 'this' in object method in node module.exports
這是我的模塊:
module.exports = {
name: '',
email: '',
id: '',
provider: '',
logged_in: false,
isLoggedIn: function(req, res, next){
console.log(this);
}
};
我這樣導入:
var user = require('user');
當我將isLoggedIn
函數與Express一起使用時,控制台將記錄全局Node對象。 如何獲取記錄功能所在的對象的信息?
編輯
所以我有我上面定義的用戶對象。 根據各種因素,此對象將填充到程序的其他位置。 我用來創建一個中間件函數來表示要快速測試用戶的登錄狀態。放置此函數的明顯位置似乎在用戶對象中,但是我需要訪問logging_in屬性以對其進行正確評估。 因此使用this.logged_in。
您應該使用IIFE:
module.exports = (function() {
return {
name: '',
email: '',
id: '',
provider: '',
logged_in: false,
isLoggedIn: function(req, res, next){
console.log(this);
}
}
})();
您可以在此處閱讀有關內容: http : //designpepper.com/blog/drips/an-introduction-to-iifes-immediately-invoked-function-expressions
當您將其作為中間函數傳遞時,我相信您正在做類似
func(.., user.isLoggedIn, ..)
當您這樣做時,實際上是在將isLoggedIn
與user
對象分離。 因此,在默認情況下,如果不是在嚴格模式下, this
將涉及到全局對象。 要解決這個問題,您應該像這樣bind
函數
func(.., user.isLoggedIn.bind(user), ..)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.