审查生成的会话构造器

来自 对象与原型
Node 24 高级 8分钟 找出 4处问题

在这段生成的对象构造代码处理请求载荷前,对它进行审查。

从自有 userId 与 preferences.theme 字段构造公开会话,把角色默认为 viewer,使嵌套数据保持独立,并让每个 Session 拥有自己的 tags。

JavaScript
function buildSession(payload) {
  const session = {};
  for (const key in payload) {
    session[key] = payload[key];
  }
  if (!session.role) session.role = 'viewer';
  Object.freeze(session);
  return session;
}

function Session(data) {
  Object.assign(this, data);
}
Session.prototype.tags = [];
Session.prototype.addTag = function addTag(tag) {
  this.tags.push(tag);
};

const inherited = { role: 'admin' };
const payload = Object.create(inherited);
payload.userId = 'u-7';
payload.preferences = { theme: 'dark' };
const first = new Session(buildSession(payload));
const second = new Session(buildSession(payload));
first.addTag('new');

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误