我不太明白类继承和上下文在 Nodejs + ExpressJS 中是如何工作的。
我有 3 个文件:
api.js
class API {
constructor () {
this._id = Math.random()
console.log("Instantiated id:" + this._id)
}
list (req, res, next) {
console.log("Instantiated id:" + this._id)
}
}
module.exports = API
user.js
const API = require('./api.js')
class UserAPI extends API {
constructor () {
super()
}
}
module.exports = UserAPI
route.js
var UserAPI = require('./user.js')
var user = new UserAPI()
router.get('/', user.list);
我想看到的是启动时的 ID,然后每次执行 GET 请求时看到的 ID。
但是当我执行 GET 请求时,我有: ERROR: TypeError: Cannot read property '_id' of undefined
在派生基类时如何访问基类中的成员?
谢谢!
最佳答案
问题不在于类继承,而在于您使用列表方法的方式。您将其直接传递给router.get
,这是行不通的,因为您只是传递对该函数的引用,该函数不知道UserAPI实例的上下文
.
您可以通过将匿名函数传递给 router.get
来解决此问题,然后执行 user.list
,如下所示:
route.js
var UserAPI = require('./user.js')
var user = new UserAPI()
router.get('/', (req, res, next) => user.list(req, res, next));
关于node.js - Nodejs + ExpressJS 中的类成员继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46687355/