// 这个文件为上下文文件, 可以理解为承上启下作用
// module.exports = {
// get query() {
// return this.request.query // 比如这个 this.request 为 ./request.js 中的内容
// },
// set body(content) {
// this.response.body = content // 比如这个 this.response.body 为 ./response.js 的内容
// },
// get body() {
// return this.response.body
// },
// }
// 当 context 中属性越来越多, 我们可以使用 __defineGetter__ 以及 __defineSetter__
// 属性封装相应方法来减少重复劳动, 日后要增加属性只要在数组中填入相应字段就行。
const proto = {}
function set(type, property) {
proto.__defineSetter__(property, function(val) {
this[type][property] = val // 这里 this 指向 proto, 原因指向调用函数的对象
})
}
function get(type, property) {
proto.__defineGetter__(property, function() {
return this[type][property]
})
}
const setRequest = []
const getRequest = ['query']
const setResponse = ['body', 'statusCode']
const getResponse = ['body', 'statusCode']
getRequest.forEach(r => {
get('request', r)
})
setResponse.forEach(r => {
set('response', r)
})
getResponse.forEach(r => {
get('response', r)
})
module.exports = proto