如何在node端初始化一个已被定义则不可再修改的namespace呢?
需要使用Object.defineProperty;
const checkSessionUser = function (passport, namespace) {
return function (req, res, next) {
if (!req['namespace']) {
Object.defineProperty(req, 'namespace', {value: namespace});// 只读属性
}
if (!passport) {
next();
}
if (req.session.user) {
next();
} else {
res.status(401);
next(new Error('您所访问的资源可是需要登录的哦'));
}
};
};
注意:Object的很多属性都超级好用,可以极大的提高效率,简化代码:
例如:
Object.defineProperty(obj, "key", {
enumerable: false,
configurable: false,
writable: false,
value: "static"
});
configurable | enumerable | value | writable | get | set | |
含义 | 可修改配置 | 可被枚举 | 对应的 | 可被重写 | 当访问该属性时,该执行 | 属性值修改时,触发执行 |
默认值 | false | false | undefined | false | undefined | undefined |