# 内置对象
Koa 有4个内置对象,Astroboy 框架提供了扩展这4个内置对象的方法。
app/extends
└── application.js
└── context.js
└── request.js
└── response.js
例如,我们有一个判断当前客户端是否是 iOS 的一个方法 isIOS
,只需要在 app/extends/context.js
文件添加一个 isIOS
方法即可。如下代码所示:
// app/extends/context.js
module.exports = {
isIOS() {
const iosReg = /iphone|ipad|ipod/i;
return iosReg.test(this.get('user-agent'));
}
};
考虑到这个方法在一次 HTTP 请求中可能会调用多次,我们一般会这么写
const IS_IOS = Symbol('Context#isIOS');
module.exports = {
isIOS() {
if (!this[IS_IOS]) {
const iosReg = /iphone|ipad|ipod/i;
this[IS_IOS] = iosReg.test(this.get('user-agent'));
}
return this[IS_IOS];
}
};
或者
const IS_IOS = Symbol('Context#isIOS');
module.exports = {
get isIOS() {
if (!this[IS_IOS]) {
const iosReg = /iphone|ipad|ipod/i;
this[IS_IOS] = iosReg.test(this.get('user-agent'));
}
return this[IS_IOS];
}
};