如何在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 |