Как завернуть все создаваемые объекты в Proxy?

Все объекты наследуют от Object. Если запрашивается несуществующее в объекте свойство, JS будет продолжать искать в прототипе родителя:

Object.prototype.moo = 555;

let obj = {};
console.log( obj.moo ) // 555

При этом, через Proxy можно перехватывать получение свойства, и кидать ошибку, если его значение undefined:

let obj = {};

obj = strict(obj);

console.log( obj.moo ); // Ошибка

function strict(obj) {
  return new Proxy(obj, {
    get: function(obj, prop) {
      if( prop in obj ) return obj[prop];
      
      throw new Error("The property `" + prop + "` is undefined!");
    }
  });
}

Возникает соблазн читерить, и вместо обработки каждого объекта, глобально настроить "строгий режим" всем объектам, массивам и прочему, где может быть подвох с undefined / NaN / выходом за пределы массива и т.п.

Присваиваение не работает для Object.prototype = new Proxy(Object.prototype, ляляля)

Есть ли лазейки?)


Ответы (0 шт):