關於在node端如何定義一個全局變量

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章