gpt4 book ai didi

node.js - Nodejs + ExpressJS 中的类成员继承

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:35 26 4
gpt4 key购买 nike

我不太明白类继承和上下文在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com