Как завернуть все создаваемые объекты в 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, ляляля)
Есть ли лазейки?)