egg这样定义controller是否有歧义
这是官方的文档代码
// app/controller/post.js
const Controller = require('egg').Controller;
class PostController extends Controller {
async create() {
const { ctx, service } = this;
const createRule = {
title: { type: 'string' },
content: { type: 'string' },
};
// 校验参数
ctx.validate(createRule);
// 组装参数
const author = ctx.session.userId;
const req = Object.assign(ctx.request.body, { author });
// 调用 Service 进行业务处理
const res = await service.post.create(req);
// 设置响应内容和响应状态码
ctx.body = { id: res.id };
ctx.status = 201;
}
}
module.exports = PostController;
其中 const { ctx, service } = this;
this按理来说,应该指向的是PostController,但是在实际当中,串改了执行上下文。
this指向了app, 这样是否产生歧义? 如果this被更改了,那么为什么不是暴露function,而是一个class。