CS Fundamentals Trainer · JavaScript · Security

Predict the output: a recursive merge that copies a parsed JSON body.

function merge(target, source) {
  for (const key in source) {
    const value = source[key];
    if (value && typeof value === 'object') {
      if (!target[key]) target[key] = {};
      merge(target[key], value);
    } else {
      target[key] = value;
    }
  }
  return target;
}
const settings = merge({}, JSON.parse('{"__proto__": {"isAdmin": true}}'));
const user = {};
console.log(settings.isAdmin, user.isAdmin);
console.log(Object.keys(settings).length, Object.hasOwn(user, 'isAdmin'));

Difficulty: medium

Answer this question

Related questions