Me gustaría que JS arroje un error cuando se usa un objeto que no está correctamente instanciado.
Ya he intentado así:
var person = function () { throw new Error('Person not instantiated!'); }; ... var x = person.age; //should throw an error when person isn't overwritten
pero no arroja un error como lo quiero (solo si escribiría person();
).
El problema aquí es que entrego el objeto en numerosos métodos y no quiero hacer un manejo de errores para todas las ocurrencias. ¿Hay alguna forma de arrojar un error al leer una propiedad de un objeto?
¿Hay alguna forma de arrojar un error al leer una propiedad de un objeto?
Sí, puede parchear el captador de propiedades con una función que arroja un error
var person = {}; Object.defineProperty(person, 'age', { get: function () { throw new Error('Person not instantiated!') }, }); var x = person.age;
O también puede reemplazar el objeto con un Proxy
que le permitirá anular un getter para todas las propiedades:
var person = new Proxy({}, { get(target, name) { throw new Error('Person not instantiated!'); } }); var x = person.age; var y = person.name;
Pero todo esto es un antipatrón. Es algo que sugeriría en contra.